18. maj 2006 - 16:13Der er
7 kommentarer og 1 løsning
Postback på textboxes i asp.net med java-script
En asp.net side skal vise status på et større anlæg. Da en sådan side kun er statisk, skal den refreshes jævnligt for at være up to date. Til dette formål har jeg fundet nedenstående java-script.
For ikke at miste indholdet at en række textboxes på min side har jeg sat AutoPostBack="True" for dem. Men så laver de en postback hver gang indholdet ændres.
Kan jeg ikke få javascriptet til at lave en postback for alle textboxene?
/********************************************
//enter refresh time in "minutes:seconds" Minutes should range from 0 to inifinity. Seconds should range from 0 to 59 var limit="0:15"
if (document.images){ var parselimit=limit.split(":") parselimit=parselimit[0]*60+parselimit[1]*1 } function beginrefresh(){ if (!document.images) return if (parselimit==1) window.location.reload() else{ parselimit-=1 curmin=Math.floor(parselimit/60) cursec=parselimit%60 if (curmin!=0) curtime=curmin+" minutes and "+cursec+" seconds left until page refresh!" else curtime=cursec+" seconds left until page refresh!" window.status=curtime setTimeout("beginrefresh()",1000) } }
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
AutoPostBack medfører at der laves et postback når du ændrer i tekstboksen - det er det der er meningen med det, og intet andet. Hvad mener du med postback for alle tekstbokse? - i forbindelse med et postback, postes det hele tilbage til serveren... Det er ikke nødvendigt at gøre det for hver kontrol. .... Hvad er det der er problemet i den løsning du har lavet? Mvh
Problemet er at jeg egentlig synes at det er træls at der bliver lavet en postback hver gang der ændres i en tekstbox, fordi der er ret mange tekstboxe. Jeg ønsker kun en postback når ham der benytter siden trykker på en slags udfør-knap. Samtidig ønsker jeg også at han bliver underrettet om anlægets aktuelle status. Anlægets status kan ændres flere gange i minuttet, og det får han kun at vide hvis han manuelt trykker update. Så her ønsker jeg at siden selv auto-refresher f.eks hvert 15 sekund. Men så er problemet bare at indholdet af textboxene går tabt.
Hvis du vil gemme noget data brugeren har indtastet - må du lade siden udføre et postback. Hvis du vil have det til at ske med et givent interval - kan du benytte den kode du har, og så i stedet for at kalde reload, kan du udføre et postback istedet. (og så slette AutoPostback="true" på dine tekstbokse). Mvh
Vil det sige at java-scriptet skal lave en postback i stedet for en reload? Nu er jeg ikke en haj til java-script, men så skal "window.location.reload()" vel bare skiftes ud med noget andet? og hvad?
Jeps - det vil det sige, og den rigtigste måde at få fat i "postback-kaldet" er at få det fra siden selv ( this.ClientScript.GetPostBackEventReference(...); ), hvilket medfører at du f.eks. kan udskifte window.location.reload() med: <%= ClientScript.GetPostBackEventReference(this, "whatever") %> Det giver dig så et helt almindeligt postback... Hvis det skal være silent (altså uden klik og blink) kan du - hvis du benytter asp.net 2.0 bruge callbacks, og ellers lave en løsning baseret direkte på xmlhttp. Mvh
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.