Orario che si aggiorna automaticamente

martedì 19 gennaio 2016 - 12.16
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Visual Studio 2010

paolagumi Profilo | Junior Member

salve a tutti,
in una mia pagina aspx (il code behind è in vb) vorrei visualizzare in una label la data ed ora corrente, che si aggiornino automaticamente, va bene anche ogni secondo.
Ho trovato di tutto di più in giro...e niente che funziona.
Esempio, con un timer:
Protected Sub Timer1_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles Timer1.Tick
lblDataOra.Text = Date.Now.ToShortTimeString 'TimeOfDay
End Sub
e nel page load ho definito il timer:
Timer1.Enabled = True
Timer1.Interval = 1000
che però non vorrei vedere.
Lanciando questo codice mi da errore:
"The control with ID 'Timer1' requires a ScriptManager on the page. The ScriptManager must appear before any controls that need it."

Poi ho provato a inserire del codice javascript, sempre copiando:

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server" onLoad="window_onload();" >
<script type = "text/javascript" language="JavaScript">
var timer;
function window_onload()
{
updateTime();
timer = setInterval("updateTime()",1000);
}
function updateTime()
{
var now = new Date();
document.getElementById("labelDataOra").innerText = (now.toLocaleString());
}
</script>

ma questo non fa proprio nulla, non va neanche in errore.
Qualcuno sa aiutarmi?
ciao e grazie,
Paola

sanghino Profilo | Junior Member

Ciao,
mi verrebbe da dirti che questo tipo di aggiornamento lo si possa fare solo lato client. I due approcci che presenti sono il primo con uso di ajax ed il secondo in javascript.

>Lanciando questo codice mi da errore:
>"The control with ID 'Timer1' requires a ScriptManager on the
>page. The ScriptManager must appear before any controls that
>need it."

Il problema è che devi inserire ad inizio pagina il riferimento allo ScriptManager, come del resto ti indica il messaggio di errore. Io ti suggerirei di cercare e studiare AjaxControlToolKit a questo indirizzo:
https://ajaxcontroltoolkit.codeplex.com/

>Poi ho provato a inserire del codice javascript, sempre copiando:
>
><asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent"
>runat="server" onLoad="window_onload();" >
><script type = "text/javascript" language="JavaScript">
>var timer;
>function window_onload()
>{
>updateTime();
>timer = setInterval("updateTime()",1000);
>}
>function updateTime()
>{
>var now = new Date();
>document.getElementById("labelDataOra").innerText = (now.toLocaleString());
>}
></script>
>
>ma questo non fa proprio nulla, non va neanche in errore.

Non sono espertissimo di javascript, ma qui mi sembra che l'unico aggiornamento della label avvenga nella onLoad di "BodyContent", probabile ti manchi ulteriore implementazione. Solitamente si crea una funzione che richiama se stessa ad intervalli di un secondo per ottenere quello che dici.
Un esempio lo trovi qui:
http://www.mrwebmaster.it/javascript/orologio-si-aggiorna-senza-refresh-pagina_6892.html

Spero di esserti stato utile.
Ciao


Sanghino
--------------------------
www.extrageek.com

paolagumi Profilo | Junior Member

ciao,
sì grazie,
nel frattempo infatti ho risolto inserendo lo script manager,
ho trovato in rete un esempio e funziona:

<td style="width:200px;">

<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:Timer ID="Timer1" OnTick="Timer1_Tick" runat="server" Interval="10000" />

<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server" >
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
</Triggers>
<ContentTemplate>

<asp:Label ID="lblDataOra" text=" " runat="server" Width="200px" CssClass="testograss" />

</ContentTemplate>
</asp:UpdatePanel>

</td>

ciao,
Paola
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5