11. juli 2007 - 19:54Der er
5 kommentarer og 1 løsning
AJAX og pageload
Jeg har en MasterPage med en usercontrol der henter data fra googles calendar. Når data er hentet gemmer jeg det i cache for at undgå de lidt lange svartider der er fra google.
Problemet opstår så når man rammer siden og data ikke er i cache - derfor vil jeg gerne hente data vha. AJAX - men jeg har kun kunnet finde eksempler på load vha. AJAX hvor man trykker på en knap for at loade et updatePanel. Hvordan får jeg hentet data asynkront første gang siden loades og uden at brugeren skal trykke på noget?
Er det noget med en skjult knap der så trykkes på vha. script der aktiveres ved pageload - eller er der en smartere løsning?
Du kan benytte Page.ClientScript.RegisterStartupScript til at få et script ud på siden, og du kan så nøjes med at gøre det, hvis der ikke er tale om et postback. // i page_load if(!IsPostBack) { Page.ClientScript.RegisterStartupScript(...); }
Med RegisterStartupScript kan jeg godt få fyret et script afsted når siden loades (har kun lige forsøgt med en simpel alert()).
Er "fidusen" så at jeg tilføjer en skjult knap på siden, finden den vha. javascript og laver en click på den? Knappen skal så være en Trigger til et updatepanel. Eller er der en smartere måde det kan gøres på? (Jeg har ikke nået at få rodet så meget med asp.net ajax, så jeg har ikke helt overblik over hvor meget der skal til for at det vil virke)
Nu er jeg lidt i tvivl om hvad du vil ende med, og hvor du vil have data liggende.... Som jeg forstår det, ønsker du at få data cached på serveren, men hvordan skal det vises til brugeren - og skal du vise det hele på én gang, eller skal du kunne hente det i bidder (fra din cache)? Mvh
På min MasterPage har jeg en usercontrol der altid vises i den ene side af skærmen. Den usercontol har et datagrid hvor datasourcen består af Events fra Googles Calendar. Når siden loades og min cache af events er tom, så tager det ret lang tid før siden vises, da data først skal hentes fra google.
Derfor ønsker jeg, at det datagrid med Google Events altid bliver loadet asynkront - så man hurtigt ser resten af siden - og så en "loading-gif" mens data hentes fra Google. Men i stedet for at brugeren skal trykke på en knap "Se kalender" som så vil hente Google data vha. AJAX, så ønsker jeg at fyre sådan en event/trigger af automatisk hver gang siden er loaded.
Jeg ved ikke kom det er den rigtige fremgangsmåde - eller om der er en smartere måde.
Jeg har nu forsøgt mig med ClientScript.RegisterStartupScript hvor jeg fik tilføjet et script der trykkede på en skjult knap for at sætte gang i et AJAX-kald virkede også ok i IE - men i Firefox blev den ved med at stå og loade siden.
Så jeg rodede lidt videre og fandt en simplere løsning (synes jeg selv). I stedet for selv at lave scripts og skjulte knapper bruger jeg nu en Timer der kører lige når siden er loaded. Når timeren kører henter jeg data fra google og propper det i et dataset. Samtidig disabler jeg Timeren når den har kørt første gang
Ja - det er self. også en model... Godt at du fik det fikset :o) Mvh
Synes godt om
Ny brugerNybegynder
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.