Aggiornamento di UpdatePanel basato su Timer con ASP.NET AJAX 1.0

di Ugo Lattanzi, in ASP.NET 2.0, ATLAS, AJAX,

Con l'uscita della versione definitiva di ASP.NET AJAX 1.0 Estensions è piuttosto semplice creare in maniera del tutto automatizzata un'aggiornamento programmatico di un'area della nostra pagina, simulando in tutto e per tutto un parziale PostBack della stessa.

Il nuovo oggetto Timer ci mette a disposione una proprietà di nome Interval con cui specificare l'intervallo espresso in millisecondi, attraverso il quale scatenare l'evento OnTick, che poi utilizzeremo per invalidare l'UpdatePanel.

Per permetterne l'aggiornamento basta aggiungere un nuovo elemento AsyncPostBackTrigger alla collection dei Triggers, con specificato l'ID del Timer come ControlID e "Tick" come EventName.

Il markup seguente mostra come fare:

<asp:UpdatePanel ID="CurrentTimePanel" runat="server">
  <ContentTemplate>
    <asp:Label ID="CurrentTime" runat="server" Text="Ora attuale: " />
 </ContentTemplate>
 <Triggers>
   <asp:AsyncPostBackTrigger ControlID="CurrentTimer" EventName="Tick" />
 </Triggers>
</asp:UpdatePanel>
<asp:Timer ID="CurrentTimer" runat="server" Interval="1000" OnTick="CurrentTimer_Tick" />

Ed ecco il relativo codice:

protected void CurrentTimer_Tick(object sender, EventArgs e)
{
  CurrentTime.Text = string.Format("L'ora corrente è {0}", DateTime.Now.ToLongTimeString());
}

Dopo ogni secondo verrà aggiornata la label contenente l'ora corrente in maniera automatica.
Ovviamente all'interno dell'UpdatePanel possiamo inserire qualsiasi cosa, da un controllo GridView fino ad un'immagine, piuttosto che altro.

Il controllo risulta comodissimo in quei siti che richiedono un aggiornamento frequente di aree, come una sezione news o un'area per la visualizzazione delle quotazioni azionarie.

Quello che vale la pena sottolineare è che è assolutamente bene non abusarne, in quanto un intervallo troppo breve può causare rallentamenti ed un sovraccarico inutile delle richieste al server web: l'esempio qui mostrato è puramente teorico e risolvibile con ben altro codice.
Ci sono implementazioni che possono fare un uso migliore di questa tecnica, i cui concetti rimangono però del tutto invariati.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi