[asp.NET] dynamische user controls events

Pagina: 1
Acties:

  • Crysania
  • Registratie: September 2000
  • Laatst online: 22:58
ik maak in mijn webapplicatie gebruik van user controls die ik dynamisch uit een objectstructuur parse en op het scherm toon.

mijn probleem is dat de events van deze user controls niet werken omdat deze events eerder afgevangen worden dat dat ze gemaakt worden:

volgorde events

Page_Load Parent
alle child events
Pre_Render Parent

in de Pre_Render van de parent worden de user controls aangemaakt. dit is dus nadat alle events uitgevoerd worden van alle child objecten, en dus worden de events totaal genegeerd.

Natuurlijk lijkt de oplossing simpel:
voeg de user controls toe in de Page_Load van de Parent??? Maar dit gaat ook niet lukken omdat dan alle events van de user Controls wel werken, maar elke keer 1 ronde te laat uitgevoerd worden. (dus moet je elke keer een keer refreshen voordat je het resultaat ziet.)

Weet iemand hoe ik toch deze events af kan vangen. misschien afvangen vanuit de Parent ofzo?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 09:42

gorgi_19

Kruimeltjes zijn weer op :9

Voeg de controls toe in het init event, Page_load is te laat, normaliter.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Crysania
  • Registratie: September 2000
  • Laatst online: 22:58
gorgi_19 schreef op 01 april 2004 @ 11:16:
Voeg de controls toe in het init event, Page_load is te laat, normaliter.
nee, Page_Load is te vroeg zoals ik al schrijf in mijn vorige bericht.

De events van de user control passen de objectstructuur aan, waarmee de user controls gegenereerd worden dus de controls moeten pas na de events aan het scherm worden toegevoegd.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:32
Dat kan je nooit doen, omdat je pagina al gecreeërd is eens hij de page_load binnenkomt.

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 09:42

gorgi_19

Kruimeltjes zijn weer op :9

THE_CR0SS schreef op 01 april 2004 @ 11:19:
[...]


nee, Page_Load is te vroeg zoals ik al schrijf in mijn vorige bericht.

De events van de user control passen de objectstructuur aan, waarmee de user controls gegenereerd worden dus de controls moeten pas na de events aan het scherm worden toegevoegd.
Dan begrijp ik niet wat voor high tech systeem je aan het bouwen bent... Kan je een voorbeeldje geven wat je nu precies wilt. Imho zijn usercontrols namelijk ondergeschikt en horen ze met hun tengels (of events) af te blijven van de structuur van de parent.
Als controls zich namelijk ook nog met de parentstructuur gaan bemoeien, dan kan je hele gekke dingen krijgen waardoor de viewstate er op een bepaald moment ook helemaal niets meer van snapt en maar een foutmelding geeft, omdat er gerommeld is met je controlcollection.

Paginastructuur incl. alle controls worden normaliter opgebouwd in je init event, waarden in de pagina worden vervolgens gevuld in je page_load en vervolgens worden de events uitgevoerd.

[ Voor 10% gewijzigd door gorgi_19 op 01-04-2004 11:22 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Crysania
  • Registratie: September 2000
  • Laatst online: 22:58
whoami schreef op 01 april 2004 @ 11:21:
Dat kan je nooit doen, omdat je pagina al gecreeërd is eens hij de page_load binnenkomt.
in de page_Load functie is de pagina nog niet gemaakt. deze wordt pas naar html gerenderd na de Pre_Render functie. tot en met deze functie kun je dus dingen toevoegen en verwijderen van je pagina.

ik zal nog even wat duidelijker proberen te zijn met wat ik aan het maken ben:

In mijn applicatie moet ik een uitbreidbare lijst maken van user controls. deze user controls kunnen dus worden toegevoegd en verwijderd. Deze usercontrols staan opgeslagen in een objectstructuur die een array bevat met objecten. elk object heeft een functie waarmee hij zichzelf omzet naar een user control zodat hij dus zichtbaar wordt op het scherm. Op deze user control zit een knop "verwijder" en hiermee moet hij dus eigenlijk zichzelf verwijderen uit de array met objecten die zijn parent heeft.

een oplossing zou zijn om ervoor te zorgen dat ik het child event in mijn parent zou kunnen afvangen. maar ik weet niet hoe ik dat zou moeten doen.
gorgi_19 schreef op 01 april 2004 @ 11:21:
[...]

Paginastructuur incl. alle controls worden normaliter opgebouwd in je init event, waarden in de pagina worden vervolgens gevuld in je page_load en vervolgens worden de events uitgevoerd.
dit is bij mij dus niet mogelijk omdat de events de controls nog aanpassen

[ Voor 15% gewijzigd door Crysania op 01-04-2004 11:36 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 09:42

gorgi_19

Kruimeltjes zijn weer op :9

Volgens mij is het dan makkelijker om na het 'verwijderen' van een control een Response.Redirect naar Request.RawUrl te doen; voorkom je ook het probleem.

Anders is een optie om de control uit de arraylist te verwijderen; de control is weliswaar wel toegevoegd, maar je zet dan de visible van deze betreffende control op false.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:32
In de page_load zijn alle controls op je page al beschikbaar.

In de Init worden de servercontrols die op de pagina komen gemaakt. Init is de eerste stap van het 'creatie-proces van de pagina'
Server controls should perform any initialization steps that are required to create and set up an instance. You cannot use view-state information within this event; it is not populated yet. You should not access another server control during this event, regardless of whether it is a child or parent to this control. Other server controls are not certain to be created and ready for access.
Daar moet je dus al je server controls gaan instantieren, en niet later.

https://fgheysels.github.io/


  • Crysania
  • Registratie: September 2000
  • Laatst online: 22:58
whoami schreef op 01 april 2004 @ 11:39:
In de page_load zijn alle controls op je page al beschikbaar.

In de Init worden de servercontrols die op de pagina komen gemaakt. Init is de eerste stap van het 'creatie-proces van de pagina'

[...]


Daar moet je dus al je server controls gaan instantieren, en niet later.
maar daar kan het dus niet gedaan worden...

en dat is het probleem ook helemaal niet. want het werkt allemaal goed dat later toevoegen van user controls.
Pagina: 1