Toon posts:

[ASP.NET]usercontrol dat usercontrol toevoegd na event

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste mensen,

Ik heb een user control A, waar o.a. een datagrid in zit.
De datagrid heeft weer een event ïtemcommand. En als deze wordt afgevuurdt, wordt er weer een ander user control B geladen. Ook weer een datagrid. Deze heeft natuurlijk ook weer events.
Het laden van de usercontrol B na de event gaat goed, maar als ik dan op een knop klik van de geladen usercontrol B en er dus een postback plaats vindt. Verdwijnt de gehele user control B. En is alleen weer Usercontrol A zichtbaar. Ik denkt dat het te maken heeft dat ik Usercontrol niet in de page load laad, maar het kan niet anders aangezien ik deze pas wil laden als een event wordt geraist.

Iemand een idee?

  • Rickets
  • Registratie: Augustus 2001
  • Niet online

Rickets

Finger and a shift

Is usercontrol B toevoegen (maar nog niet binden) en op invisible zetten geen optie? Bij het itemcommandevent van A kan je dan usercontrol B binden en Visible op true zetten.

If some cunt can fuck something up, that cunt will pick the worst possible time to fucking fuck it up, because that cunt’s a cunt.


Verwijderd

Topicstarter
heb ik geprobeerd, maar zonder succes:(

Verwijderd

Als je een usercontrol in runtime toevoegt, komt hij dan wel in de viewstate terecht? Misschien moet je hem nog zelf aan de viewstate toevoegen. Weet dit niet zeker, maar zou volgens mij kunnen.

  • joopst
  • Registratie: Maart 2005
  • Laatst online: 01-10-2024
Een event werkt alleen als je bij een postback psies dezelfde control-tree nog een keer opbouwd als net voor de postback.

Dus als je jouw 2de datagrid 'klikbaar' wilt maken, dan moet je hem op de postback WEER toevoegen aan je eerste datagrid (let erop dat ze ook dezelfde id's hebben).

Rickets stelt voor dat je altijd al dezelfde control-tree opbouwd, maar dat je in bijv de pre-render sommige controls uitzet .. dan hoef je dus bij een postback niet ingewikkeld te lopen doen om te kijken welke controls je moet instantieren, want de tree is altijd hetzelfde.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 07-05 10:04
Je moet er aan denken dat dynamic controls alleen in Page_Load of eerder kunnen worden toegevoegd, als je wilt dat ASP.Net viewstate en events gaat laten werken.

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.


Verwijderd

Topicstarter
aah, moet eerlijk zeggen, dat ik het viewstate principe van asp.net, nog niet goed heb bestudeerd. Nog niet eerder nodig gehad vandaar.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 07-05 10:04
Verwijderd schreef op maandag 09 mei 2005 @ 22:32:
aah, moet eerlijk zeggen, dat ik het viewstate principe van asp.net, nog niet goed heb bestudeerd. Nog niet eerder nodig gehad vandaar.
In MSDN staat uitgelegd wat de lifetime cyclus is van een object tijdens een request, en wat de volgorde van events is. Toch wel nuttig om daar eens naar te kijken.

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.


Verwijderd

Topicstarter
mmm strange, Als ik bijvoorbeeld in de event waar de usercontrol moet worden geladen een Viewstate["ïsloaded"]=true; maak. En op basis hiervan check in :
page_load(){
if( Viewstate["ïsloaded"]){
control c=loadControl(xxx);
this.controls.add(c);
}

Dan krijgt Viewstate["ïsloaded"] pas de waarde true als ik nog een keer de event afvuur. Dus de viewstate["ïsloaded"] wordt pas na de postback geset. Is dit gedrag normaal?

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Volgens mij worden de waarden in je ViewState gezet na het uitvoeren van de CreateChildControls. Je kan dit het best even nazoeken in de MSDN

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
ik heb het opgelost door altijd de usercontrols mee te nemen, en pas waar nodig de usercontrol op visible te zetten. Niet geheel efficient naar mijn gevoel, want de usercontrols worden altijd in runtime in de controltree opgenomen.
Pagina: 1