Situatie: ik heb een aspx pagina met 2 verschillende usercontrols:
- selector.ascx
- wizard.ascx
Wizard.ascx bevat een event CommandExecuted, deze wordt soms gevuurd als de user op een knop drukt (hangt af van andere invoer). De aspx pagina vangt dit event af en roept dan de methode Refresh() aan op selector.ascx.
aspx:
In Refresh() wordt een variabele _refresh ingesteld op true (standaard false). Deze wordt weer gebruikt in OnPreRender() (allemaal in selector.ascx dus).
Probleem: in OnPreRender is _refresh altijd de standaardwaarde. Refresh() lijkt dus deze variabele niet te veranderen. Vreemd inderdaad. Met de debugger blijkt dat de instanties van selector.ascx (selector_ascx) niet dezelfde zijn voor Refresh en OnPreRender (tijd van initialisatie is anders). Toch worden al deze commando's binnen dezelfde page cycle uitgevoerd.
Eigen oplossingen: niet zoveel
Als ik een lege constructor aanmaak in selector.ascx (public Selector()) zodat ik er een breakpoint kan neerzetten blijkt deze constructor toch maar 1x gehit te worden. Hoe kan dan in godesnaam de tijd van initialisatie van de instantie van selector.ascx voor Refresh() en OnPreRender() anders zijn.
Het moet ergens zitten in de volgorde van events vuren en initialisatie vermoed ik, maar ik zie helaas niet waar en hoe. Google noch newsgroups bieden uitkomst.
Iemand een idee of soortgelijke problemen tegengekomen? Ik snap er geen hout meer van
- selector.ascx
- wizard.ascx
Wizard.ascx bevat een event CommandExecuted, deze wordt soms gevuurd als de user op een knop drukt (hangt af van andere invoer). De aspx pagina vangt dit event af en roept dan de methode Refresh() aan op selector.ascx.
aspx:
C#:
1
2
3
4
5
6
| SelectorControl selectorControl; [...] private void wizardControl_CommandExecuted(object sender, EventArgs e) { selectorControl.Refresh(); } |
In Refresh() wordt een variabele _refresh ingesteld op true (standaard false). Deze wordt weer gebruikt in OnPreRender() (allemaal in selector.ascx dus).
Probleem: in OnPreRender is _refresh altijd de standaardwaarde. Refresh() lijkt dus deze variabele niet te veranderen. Vreemd inderdaad. Met de debugger blijkt dat de instanties van selector.ascx (selector_ascx) niet dezelfde zijn voor Refresh en OnPreRender (tijd van initialisatie is anders). Toch worden al deze commando's binnen dezelfde page cycle uitgevoerd.
Eigen oplossingen: niet zoveel
Als ik een lege constructor aanmaak in selector.ascx (public Selector()) zodat ik er een breakpoint kan neerzetten blijkt deze constructor toch maar 1x gehit te worden. Hoe kan dan in godesnaam de tijd van initialisatie van de instantie van selector.ascx voor Refresh() en OnPreRender() anders zijn.
Het moet ergens zitten in de volgorde van events vuren en initialisatie vermoed ik, maar ik zie helaas niet waar en hoe. Google noch newsgroups bieden uitkomst.
Iemand een idee of soortgelijke problemen tegengekomen? Ik snap er geen hout meer van
Panacea.NL als je geinteresserd bent in IT en Geneeskunde!