Hoi allemaal,
Ik ben bezig met een eigen framework voor portal websites. De hele website wordt op basis van een database gegenereerd en opgezet qua layout. Ik gebruik een page, met daarin een template die de place holders bevat waar mijn user controls op komen. De user controls worden door de template geladen en in de juiste place holder geplaatst.
Voordat mijn controls op de template komen, worden ze eerste gelanden in een control container die een edit, delete, minimize etc knop heeft (zegmaar een shell van de functionele control zelf). Alles gaat prima wat betreft het laden, het ondervangen van de postbacks etc.
Het probleem is echter wel in de performance na de postbacks. Voorbeeld: Control 1 heeft een grid view en een knop. Als ik op die knop klik, wordt met AJAX de content veranderd van die control wat ik ook wil... Alleen, omdat ook andere dynamische controls geplaatst zijn op dezelfde pagina, duurt het wel een tijdje, omdat ASP de andere controls opnieuw aan het laden is en de ViewState informatie aan het doornemen is voor alle controls op de pagina.
Wat ik wil is een methode om bij een postback binnen mijn control container, daar ook af te vangen zonder dat andere controls en de pagina daar last van hebben. Wat ik jammer vindt is dat met UpdatePanel dit niet mogelijk is. Na een postback van welk control dan ook, worden alle componenten opnieuw geladen.
Zijn hier alternatieven voor? Ik heb het volgende gevonden: http://www.codeproject.com/KB/ajax/PartialUpdatePanel.aspx
Het is een zeer interssant component die doet wat ik wil, behalve dat het niet werkt met doorgeven van controls. Dit component vraagd naar de locatie van een control, maar dat is in mijn geval niet voldoende, omdat ik ook parameters zoals DatabaseID's en de container instance mee moet geven. Het zou mooi zijn als iemand een soortgelijke component kent, met de mogelijkheid om het volgende te doen:
De InitContainer() zorgt ervoor dat de geladen control weet welke container gebruikt wordt. Zo kan ik na een Edit, de OnEdited() functie aanroepen in mijn container en eventuele verdere code.
Ik hoor graag of jullie tips/suggesties hebben hoe ik dit probleem kan oplossen. Het gaat dus puur om de performance te verbeteren en mijn controls afzonderlijk te laden (populaten) nadat de pagina is geladen.
Alvast bedankt,
Sead
Ik ben bezig met een eigen framework voor portal websites. De hele website wordt op basis van een database gegenereerd en opgezet qua layout. Ik gebruik een page, met daarin een template die de place holders bevat waar mijn user controls op komen. De user controls worden door de template geladen en in de juiste place holder geplaatst.
Voordat mijn controls op de template komen, worden ze eerste gelanden in een control container die een edit, delete, minimize etc knop heeft (zegmaar een shell van de functionele control zelf). Alles gaat prima wat betreft het laden, het ondervangen van de postbacks etc.
Het probleem is echter wel in de performance na de postbacks. Voorbeeld: Control 1 heeft een grid view en een knop. Als ik op die knop klik, wordt met AJAX de content veranderd van die control wat ik ook wil... Alleen, omdat ook andere dynamische controls geplaatst zijn op dezelfde pagina, duurt het wel een tijdje, omdat ASP de andere controls opnieuw aan het laden is en de ViewState informatie aan het doornemen is voor alle controls op de pagina.
Wat ik wil is een methode om bij een postback binnen mijn control container, daar ook af te vangen zonder dat andere controls en de pagina daar last van hebben. Wat ik jammer vindt is dat met UpdatePanel dit niet mogelijk is. Na een postback van welk control dan ook, worden alle componenten opnieuw geladen.
Zijn hier alternatieven voor? Ik heb het volgende gevonden: http://www.codeproject.com/KB/ajax/PartialUpdatePanel.aspx
Het is een zeer interssant component die doet wat ik wil, behalve dat het niet werkt met doorgeven van controls. Dit component vraagd naar de locatie van een control, maar dat is in mijn geval niet voldoende, omdat ik ook parameters zoals DatabaseID's en de container instance mee moet geven. Het zou mooi zijn als iemand een soortgelijke component kent, met de mogelijkheid om het volgende te doen:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| ' [...] ' Dynamisch laden van mijn control: Dim lMyControl As GadgetControl = LoadControl("~/Controls/MyControl.aspx") With lMyControl .ID = content.ID ' Database id van de content (control kan meerdere malen gebruikt worden) .InitContainer(Me) ' Doorgeven van de content container End With ' Dit kan niet met het component: PartialUpdatePanel.UserControl = lMyControl ' Dit wel, maar is niet handig voor dynamische controls PartialUpdatePanel.UserControlPath = "~/Controls/MyControl.aspx" |
De InitContainer() zorgt ervoor dat de geladen control weet welke container gebruikt wordt. Zo kan ik na een Edit, de OnEdited() functie aanroepen in mijn container en eventuele verdere code.
Ik hoor graag of jullie tips/suggesties hebben hoe ik dit probleem kan oplossen. Het gaat dus puur om de performance te verbeteren en mijn controls afzonderlijk te laden (populaten) nadat de pagina is geladen.
Alvast bedankt,
Sead