Countdown e Postback

lunedì 17 gennaio 2011 - 09.02
Tag Elenco Tags  C#  |  .NET 2.0  |  Visual Studio 2005  |  Javascript

mattekr Profilo | Newbie

Ciao a tutti, ho questa pagina che si occupa di fare un conto alla rovescia per tener conto di un timeout

<div id="countbox"></div>

<asp:Button ID="Button1" runat="server" Text="Button" />

<asp:RadioButton ID="RadioButton1" runat="server" />
<asp:RadioButton ID="RadioButton2" runat="server" />
<asp:RadioButton ID="RadioButton3" runat="server" />
<asp:TextBox ID="txtFlag" runat="server"></asp:TextBox>



<script type="text/javascript">


dateFuture = new Date;
dateFuture.setMinutes(dateFuture.getMinutes() + 2);

function GetCount(){

dateNow = new Date();
amount = dateFuture.getTime() - dateNow.getTime();
delete dateNow;
if(amount < 0){
//document.getElementById('countbox').innerHTML="Now!";
window.location="Timeout.aspx";
}
else{
days=0;hours=0;mins=0;secs=0;out="";
amount = Math.floor(amount/1000);

days=Math.floor(amount/86400);
amount=amount%86400;

hours=Math.floor(amount/3600);
amount=amount%3600;

mins=Math.floor(amount/60);
amount=amount%60;

secs=Math.floor(amount);

//if(days != 0){out += days +" day"+((days!=1)?"s":"")+", ";}
//if(days != 0 || hours != 0){out += hours +" hour"+((hours!=1)?"s":"")+", ";}
if(days != 0 || hours != 0 || mins != 0){out += mins +((mins!=1)?" minuti":" minuto")+", ";}
out += secs +" secondi";
document.getElementById('countbox').innerHTML=out;

setTimeout("GetCount()", 1000);
}
}

window.onload=GetCount;
</script>


Il problema è che premendo il pulsante (postback) il conto alla rovescia riparte da capo. Avete qualche idea di come poter fare per impedirlo?

Grazie, ciao

alx_81 Profilo | Guru

>Ciao a tutti, ho questa pagina che si occupa di fare un conto
>alla rovescia per tener conto di un timeout
Ciao

>Il problema è che premendo il pulsante (postback) il conto alla
>rovescia riparte da capo. Avete qualche idea di come poter fare
>per impedirlo?
Questo perchè sei sul client, e quindi ogni volta che aggiorni la pagina, alla onload, viene ripristinato lo stato iniziale.
Se vuoi persistere lo stato a cui sei arrivato, devi salvare a server ogni tick (ad esempio in session, o nel viewstate) e ad ogni ricaricamento vai a leggere il valore da server.

>Grazie, ciao
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

mattekr Profilo | Newbie

Ciao, grazie mille della risposta.

Intendi qualcosa del tipo

if (variabile =null)
dateFuture = new Date;
dateFuture.setMinutes(dateFuture.getMinutes() + 2);
variabile=dateFuture
else
dateFuture = new Date(variabile);
end if

dove variabile è il viewstate o il session?

alx_81 Profilo | Guru

>Ciao, grazie mille della risposta.
>Intendi qualcosa del tipo

>if (variabile =null)
>dateFuture = new Date;
>dateFuture.setMinutes(dateFuture.getMinutes() + 2);
>variabile=dateFuture
>else
>dateFuture = new Date(variabile);
>end if
>dove variabile è il viewstate o il session?
Sì, qualcosa di simile. Puoi anche fare un cookie, scegli tu, se ti serve il time su server, devi andare a server, se ti serve un timer client con il salvataggio solamente, puoi usare un cookie.
attenzione alla condizione, l'uguaglianza è ==
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5