[asp.net / c#] Dynamisch gegenereerde web usercontrol events

Pagina: 1
Acties:

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 17:43
Ik maak in asp.net in een aspx bestand dynamisch mijn web user controls aan. Dit gaat opzich prima en de componenten worden netjes getoond wanneer ze aan de beurt zijn (het is een soort wizard). Ik doe dit met het loadcontrol event.

Nou is er één probleem: events (van het component) worden niet afgevuurd. Het vreemde is dat het page_load event wel wordt afgevuurd maar de overige -waaronder dus de submit button die voor mij wel van belang is- niet. Als het component op een normale manier wordt ingeladen, dus gewoon in de aspx pagina, hij wel prima werkt. Verder zijn er geen bijzonderheden.

Mijn speurtocht op internet levert helaas weinig concreets op. Het enige wat ik tegenkom is deze pagina, waar ongeveer hetzelfde probleem wordt besproken als wat ik heb. Zoals je kan zien is op die vraag nog geen antwoord gegeven dus helaas kan ik daar vrij weinig mee.

Zijn er hier nog mensen die tips hebben over het oplossen van dit vervelende probleempje :?.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:49

gorgi_19

Kruimeltjes zijn weer op :9

Waar plaats je de controls op de pagina?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • TlighT
  • Registratie: Mei 2000
  • Laatst online: 22-03 10:40
Je moet de controls zo vroeg mogelijk aan de controlcollection van je pagina toevoegen, dus of in de OnInit of in de Page_Load, anders worden de events van dat control niet afgevuurd.

[ Voor 14% gewijzigd door TlighT op 07-04-2005 12:31 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:49

gorgi_19

Kruimeltjes zijn weer op :9

TlighT schreef op donderdag 07 april 2005 @ 12:29:
Je moet de controls zo vroeg mogelijk inladen, dus of in de OnInit of in de Page_Load, anders worden de events van dat control niet afgevuurd.
Page_load is al aan de erg late kant, zeker als je met Page.IsPostback wil gaan afvangen. OnInit / CreateChildControls zijn gebruikelijkere plaatsen :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 17:43
gorgi_19 schreef op donderdag 07 april 2005 @ 12:27:
Waar plaats je de controls op de pagina?
Ik heb de volgende code:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void Page_Load(object sender, EventArgs e)
{
    ...
    switch (step)
    {
        ...
        case 5:
            Control ctrloc = LoadControl("../woef/OrderConfirm.ascx");
            ctrloc.ID = "OrderConfirm1";
            pnlContainer.Controls.Add (ctrloc);
            lblStep.Text = "step 5";
            break;
    }

}


Het gebeurt dus in de Page_Load. Veel eerder is erg moeilijk omdat er allerlei controles worden uitgevoerd om te kijken welke stap moet worden uitgevoerd en dus welke control moet worden geladen.

In het component zelf overigens worden de events uiteraard in de init uitgevoerd.

[ Voor 4% gewijzigd door Dennis op 07-04-2005 13:03 ]


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 07-05 10:04
Viewstate aanstaan?

Overigens, ik heb gemerkt dat als je dropdown boxes gebruikt je ook alle opties in je page_load moet toevoegen anders geet het nog niet goed.

Voeg je je event handlers in het control ook dynamisch toe? Voer je die events naar je page?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:49

gorgi_19

Kruimeltjes zijn weer op :9

Vergelijk je ID's een voor en na een postback (te vinden dmv trace.axd), ik gok dat ze verschillend zijn?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 17:43
farlane schreef op donderdag 07 april 2005 @ 13:35:
Voeg je je event handlers in het control ook dynamisch toe? Voer je die events naar je page?
Ehm nee, dat is wel okay. Met de tip van Page_Load kon ik opzich wel eens, want ik had stiekem een tijdje geleden de Page_Load methode toegekend aan Page.PreRender :X.

Dit omdat ik wilde dat de pagina pas de te laten zien control 'berekende' op het moment dat de componenten op de pagina al hun methodes al hadden uitgevoerd.

Ik had hem als test even aan Page.Load toegekend en toen werkt het plotseling wel :+.

Voor het andere probleem wat nu is gecreëerd ga ik een nettere oplossing bedenken, want eigenlijk was wat ik deed heel vies. Maarja, ik ben nog niet zo lang bezig met asp.net dus het is nog allemaal een beetje nieuw voor mij :). Bedankt voor jullie hulp iig!
Pagina: 1