[ASP.NET] controls uitlezen als reactie op form.submit

Pagina: 1
Acties:

  • Goldme
  • Registratie: September 2000
  • Laatst online: 13:42
Ik heb een aspx-pagina die dynamisch opgebouwd wordt in de page_load van die pagina. Deze pagina reageert op het klikken op een LINK(niet op een knop dus).

Als de link geklikt wordt wordt door javascript een form.submit gedaan waardoor de form gesubmit wordt naar de codebehind van die pagina. Ik kom dus hierdoor weer in de page_load van de aspx. Alle elementen worden dus weer dynamisch opgebouwd(wordt zoals gezegd altijd gedaan in page_load).

Tot zover gaat het goed.

Ik moet echter data uit deze in page_load dynamisch aangemaakte controls lezen. De viewstate voor deze controls wordt pas "losgelaten" NA de page_load. Dus de controls kan ik pas gaan uitlezen NA de page_load(want dan pas hebben ze hun waarde die ze op de pagina hadden). Maar aangezien ik op een form.submit reageer en NIET op een button_clicked of iets dergelijks kom ik niet terecht bij een methode NA de page_load maar bij de page_load zelf. Hierdoor is de viewstate nog niet losgelaten voor deze dynamisch toegevoegde controls en krijg ik dus verkeerde data(of nullpointers) bij het uitlezen.

Als ik op een click van een button reageerde dan zou dat wel kunnen, page_load wordt dan eerst uitgevoerd, vervolgens wordt de viewstate losgelaten op de aangemaakte controls en krijgen ze dus hun waarde en dan pas wordt de event_handler van de button aangeroepen die nu netjes alles uitleest zoals het hoort. Maar dat is dus bij het reageren op een button_click en ik werk nu eenmaal met links op de pagina.

Ik moet dus een manier vinden om een methode aan te roepen die NA page_load wordt uitgevoerd in de codebehind aangezien dan pas alles goed is ingesteld. Als ik in page_load zelf de controls ga zitten lezen (na het aanmaken) dan krijg ik niet de goede waarden.

Weet iemand de oplossing hiervoor? ik moet links blijven gebruiken aangezien dat op dit moment het ontwerp is dus links vervangen voor knoppen is niet de oplossing.

  • whoami
  • Registratie: December 2000
  • Nu online
code:
1
if( !this.IsPostback )


Waarom maak je je controls opnieuw aan na een postback?

Trouwens, ik denk dat gorgi hier straks gaat binnenkomen en zeggen dat je beter CreateChildControls oid overrided en dat je daarbinnen je dynamische controls maar moet aanmaken.

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

* gorgi_19 gaat nog een stapje terug en zegt dat je je controls tijdens het Init-event moet aanmaken.

En de reden dat je je controls opnieuw moet aanmaken, is dat ASP.Net anders vergeet dat hij ze heeft (bij dynamische controls) :P

[ Voor 41% gewijzigd door gorgi_19 op 07-11-2003 16:21 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Goldme
  • Registratie: September 2000
  • Laatst online: 13:42
Dus ik moet aan de init een eigen methode koppelen die de controls maakt, vervolgens zet ik de code voor het uitlezen van de controls in de page_load als ik het goed begreep.

De controls die ik dynamisch toevoeg zijn composite controls(bestaan uit meerdere elementen zoals een textveld en een radiobuttonlist). Als ik in de init van de aspx de controls weer ga aanmaken en de waarden in de page_load lees betekent dit dat ik niet dezelfde truc hoef uit te voeren in deze composite controls? of moet ik ook daar een methode aan de init koppelen? de waarden uit de controls lees ik trouwens uit via een methode in die controls.

  • whoami
  • Registratie: December 2000
  • Nu online
Ik denk wel dat je zelf ook nog (in de init) de waarde van je dynamische controls zult moeten zetten.

Je zult afaik in de viewstate van de pagina de waarde die in die controls staat/stond moeten bewaren. (Dit kan je doen in de page_unload).
In de page-init zet je dan de gepaste waarden terug nadat je de controls hebt aangemaakt.

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

whoami schreef op 07 november 2003 @ 16:46:
Ik denk wel dat je zelf ook nog (in de init) de waarde van je dynamische controls zult moeten zetten.
Nope; je maakt ze alleen, geeft ze een ID evt, maar je geeft ze geen waarde mee (in geval van Textbox) blijft Text dus leeg.

Anders kom je gigantisch in de knoei met je postbacks.

Veiligste is dat je ze aanmaakt in je Init, en vervolgens gaat 'vullen' als normaal in je Load.
Je zult afaik in de viewstate van de pagina de waarde die in die controls staat/stond moeten bewaren. (Dit kan je doen in de page_unload).
In de page-init zet je dan de gepaste waarden terug nadat je de controls hebt aangemaakt.
Dat hoeft niet; je hoeft de Viewstate niet zelf te gebruiken. De waarde van de controls wordt wel bewaard.

Als je met dynamische controls aan de gang gaat, kijk dan wel uit.. :p Je mag niet zomaar controls verwijderen bij een postback; gaat ASP.Net redelijk bokken omdat z'n controlcollection dan niet meer klopt.. :P

[ Voor 65% gewijzigd door gorgi_19 op 07-11-2003 16:58 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Nu online
gorgi_19 schreef op 07 november 2003 @ 16:49:
[...]

Veiligste is dat je ze aanmaakt in je Init, en vervolgens gaat 'vullen' als normaal in je Load.
De controls die je niet dynamisch aanmaakt worden toch ook in de OnInit opgevuld?

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

whoami schreef op 07 november 2003 @ 19:33:
[...]

De controls die je niet dynamisch aanmaakt worden toch ook in de OnInit opgevuld?
Ik verwacht het eigenlijk wel. :)

Alleen je kan meerdere handlers van een event hebben.

[ Voor 12% gewijzigd door gorgi_19 op 07-11-2003 19:39 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Nu online
gorgi_19 schreef op 07 november 2003 @ 19:39:
[...]

Ik verwacht het eigenlijk wel. :)
Waarom ga je dynamische controls dan eigenlijk in de page_load vullen?

[sub]* whoami heeft niet echt ervaring met dynamische controls in asp.net[/sub]

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

whoami schreef op 07 november 2003 @ 19:39:
[...]


Waarom ga je dynamische controls dan eigenlijk in de page_load vullen?

[sub]* whoami heeft niet echt ervaring met dynamische controls in asp.net[/sub]
Anders worden je postbacks volstrekt waardeloos :P (in je init worden dan steeds de 'oude' waarden gevuld). Vergelijk het als je niet "If Page.IsPostback" gebruikt in je Load handler.

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1