Avatar billede cdull Nybegynder
06. marts 2007 - 13:56 Der er 6 kommentarer og
1 løsning

Multiview loader aller usercontrols

Jeg har det her multiview. I hver multiview er der en usercontrol.
Jeg vil så gerne have at den enkelte usercontrol, kun loades hvis det view er valgt.
Men sådan som jeg ser det, bliver pageload i samtlige usercontrols kørt, for hver pageload i main siden.

Jeg har også noget AJAX hvor der er et updatepanel.
Mit multiview ligger i det updatepanel.
en knap trigger en event, som sætter multiviewets aktive view til at være det valgte. det virker også super.

Mit problem ligger i at samtlige usercontrols, loades hver gang.
Og al logic i mine usercontrols, load for hver gang jeg skifter view gennem AJAX. AJAX laver et postback til siden, men opdatere kun det i updatepanelet.

Hvordan undgår jeg at kontakt til databasen fra main siden, ikke blir kørt hver hver evig eneste ajax postback.
Og hvordan undgår jeg at samtlige usercontrols i mit multiview, ikke loades ved hver ajax postback.

gir det mening?
Avatar billede snepnet Nybegynder
06. marts 2007 - 14:17 #1
Du må tilføje kontrollerne dynamisk når du ønsker det, hvis du ikke vil have dem i kontroltræet ved hvert request/response.

Du kan nøjes mente at hente data første gang siden vises - eller når der er direkte behov for det.
if(!IsPostBack)
{
  // load data
}

Et updatepanel giver dig ajax uden at pille ved din page-lifecycle. Du har derfor den normale sekvens af events, og du kan skrive din kode uden hensyntagen til om det er et alm. postback eller et partial postback.

Du kan dog sørge for at undersøge det ved at spørge på din scriptmanagers .IsInAsyncPostBack - og køre den nødvendige kode afhængigt af om det er det ene eller det andet.

Mvh
Avatar billede cdull Nybegynder
06. marts 2007 - 15:02 #2
Super. Jeg loader dem dynamisk nu. mange tak, og det virker.

Jeg instansiere et objekt i
if(!IsPostBack)
{
//loaddata
mitobjekt = altdata.
}

Hvordan bibeholder jeg disse data?
Når jeg nu kører mine ting, og ajax kalder den kaldte event, er mitobjekt = null.
Jeg sætter nogle properties fra mitobjekt på nogle properties i usercontrolsne, data skal hentes ud en gang så jeg slipper for kontakt med databasen igen.
Avatar billede snepnet Nybegynder
06. marts 2007 - 15:08 #3
Enten serialiserer du dem til viewstate, lægger dem i session, eller læser dem ind hver gang.
Afhængig af hvad det er for noget data - kan du jo lægge det i profiles også.
Er det noget der blot skal benytte til at sætte nogle kontrol properties - vil disse typisk blive bevaret i viewstate, hvorfor det oprindelig objekt ikke er nødvendigt.
Mvh
Avatar billede cdull Nybegynder
06. marts 2007 - 15:12 #4
Måske er det nok bedst at jeg indlæser dem hver gang, afhængig af hvilken usercontrol der er tale om.
jeg har ikke meget erfaring med viewstate, og kender ikke til det performance mæssige.
Avatar billede snepnet Nybegynder
06. marts 2007 - 15:16 #5
Der er en del overhead med viewstate... Men data holdes på klienten, og du sparer derved
a) ram på serveren
b) kald til en ressource
Men well... hastigheden er ikke just i top ;o)
Session/Cache er hurtigere, men trækker så lidt ram på serveren.
Mvh
Avatar billede cdull Nybegynder
06. marts 2007 - 16:11 #6
Det er sku super.
Og mange tak for den hurtige afklaring på viewstate, og session/cache.

smid et svar.
Avatar billede snepnet Nybegynder
07. marts 2007 - 16:55 #7
Kommer her :o)
Mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester