Toon posts:

[.NET] web user control laden na button click

Pagina: 1
Acties:

Verwijderd

Topicstarter
Mijn situatie is de volgende... ik heb een web form met een aantal knoppen en een pageholder, daarnaast heb ik een aantal web user controls gemaakt...

Als ik knop a klik clear ik in de click event de controls collection in de page holder en wil ik control a laden in de page holder, als ik knop b klik clear ik in de click event weer en wil ik control b laden in de page holder, etcetera, etcetera.

Ja, easy, zou je zeggen... totdat je events (bijv. een button met een click) in de web user control hebt.. want als een web user control niet in de onload (of een eerdere stage in de page life cycle) wordt toegevoegd aan een controlcollection dan worden de eventhandlers binnen die control niet geregistreerd.. dus gebeurt er het volgende.. ik laad mn pagina, klik op knop a, control a laadt, dan klik ik op de knop in control a en gebeurt er niets.

Wat ik toen gedaan heb is dat ik bij de click van een knop een var in de sessie zet en deze uitlees in de onload om de betreffende control te laden. Maar ook dit werkt niet.. want de click event van de knop wordt pas uitgevoerd NA de onload van de pagina.. dus wordt de goede control pas geladen als ik 2 keer op de knop heb geklikt. Hieronder deze flow:

• klik knop a
• onload, load juiste control adhv var in sessie (maar die is er nog niet, die komt pas twee stappen verder) en stop m in pageholder
• uitvoeren onclick event knop en stop hier variabele in sessie
• klik knop a, 2e keer
• onload, load juiste control adhv var in sessie (nu is er die variabele wel in de sessie omdat k m de vorige keer tijdens de click event in de sessie heb gezet) en stop m in pageholder
• uitvoeren onclick event knop en stop hier variabele in sessie

Als ik nu op knop b klik moet ik dat ook 2 keer doen omdat de onload na de eerste klik nog denkt dat ie met knop a, en dus control a, te maken heeft...

K ben hier ondertussen alweer uren mee bezig, heb tig 'oplossingen' bedacht en geprobeerd, half msdn afgelezen, en zit er helemaal doorheen... :( k hoop dan ook dat een van jullie een goeie oplossing hiervoor heeft.. :)

  • Folkert
  • Registratie: September 2001
  • Laatst online: 07:10
Mischien niet echt de oplossing maar kan je misschien de buttons vervangen door een link en deze verwijzen naar dezelfde pagina en een querystring meegeven (bijv. default.aspx?ctrlID=1).
Afhankelijk van deze string kan de controls inladen zodat ze correct worden ingeladen....(een nieuw load ipv de postback)

  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

Verschillende opties:
1. In je Page_load de boel icm viewstate oplossen
2. Webcontrol state op invisible zetten en bij het klikken deze state veranderen
3. Via de querystring werken.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
1. is ook geen optie... want als ik in de onclick mn viewstate aanpas is de onload ook al geweest.. dus hetzelfde probleem als met in de sessie

2. not done... dan is de hele kracht van het idee weg.. want dan ga ik toch eerst alles laden, en dat is niet de bedoeling

3. dan is het geen postback, en dat heeft mn systeem wel nodig...

k heb hier vandaag een andere programmeur op de zaak en zal het hem even vragen.. ik laat nog van me horen.

  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 28 juni 2004 @ 10:13:
1. is ook geen optie... want als ik in de onclick mn viewstate aanpas is de onload ook al geweest.. dus hetzelfde probleem als met in de sessie
Nee, je voegt hem toe aan de viewstate EN je voegt hem in je onclick toe aan de controlcollection. Vervolgens handel je dit af in je Page_load, want je bent veel te laat, waardoor de viewstate niet automatisch bewaard wordt en je control 'vergeten' wordt. Je zult dus zelf je controlcollection steeds op orde moeten brengen.
2. not done... dan is de hele kracht van het idee weg.. want dan ga ik toch eerst alles laden, en dat is niet de bedoeling
Ik heb geen idee, want je zegt niets over de specifieke implementatie. Puur dynamische controls is best leuk, helemaal op assembly niveau. Dit werkt heerlijk flexibel, maar een rotwerk om uit te zoeken hoe je dit goed krijgt, ook ivm performance. :)

[ Voor 26% gewijzigd door gorgi_19 op 28-06-2004 10:22 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Opgelost! :)

Wat ik niet wist, en nu dus wel en ook nooit meer vergeet, is dat ie met postback post naar de id van de control... nou dat wist ik wel, maar wat ik niet wist is dat ie zelf een id aanmaakt voor de control als je bij het toevoegen 'm niet zelf een id geeft.... en daar zat het probleem.. bij het toevoegen van de nieuwe control gaf ie ctl_2 als id, omdat er al een was met ctl_1.. vervolgens bij de postback na een buttonclick post ie naar ctl_1 omdat er maar 1 control is, maar de id van de nieuwe control is ctl_2 en dus komt de postback nooit aan...

Nu geef ik de control bij het toevoegen altijd dezelfde id (e.g. "activecontrol") en het werkt perfect! :)
Pagina: 1