Avatar billede frydenholm Nybegynder
11. juli 2007 - 19:54 Der 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?
Avatar billede snepnet Nybegynder
12. juli 2007 - 11:34 #1
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(...);
}

Mvh
Avatar billede frydenholm Nybegynder
12. juli 2007 - 22:46 #2
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)
Avatar billede snepnet Nybegynder
13. juli 2007 - 12:04 #3
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
Avatar billede frydenholm Nybegynder
13. juli 2007 - 12:20 #4
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.
Avatar billede frydenholm Nybegynder
18. juli 2007 - 10:52 #5
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
Avatar billede snepnet Nybegynder
03. august 2007 - 16:23 #6
Ja - det er self. også en model... Godt at du fik det fikset :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