Galleria fotografica dinamica con ASP.NET AJAX

3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>

Passo 3: selezionare il controllo Timer e trascinarlo nella pagina inserendolo all'interno del controllo UpdatePanel, così come mostrato nella figura 3.

Figura 3

Passo 4: aggiungere alla pagina un controllo Timer (figura 4).

Il controllo Timer è il cuore della soluzione proposta. Questo controllo ha la caratteristica di poter scatenare un evento ad intervalli prestabiliti. Si può intuire dunque che sarà il controllo Timer a lanciare la routine che carica le immagini ad intervalli prestabiliti, dando così l'effetto di un filmato che gira.

Il controllo Timer espone la proprietà Interval che non è altro che la cadenza con cui il controllo scatena gli eventi. L'unità di misura della proprietà in questione è il millisecondo, per cui un valore pari a 1000 significa che il controllo Timer scatenerà il suo evento ogni secondo (3000 equivale ad un intervallo di tre secondi e così via).

Passo 5: aggiungere all'interno dell'UpdatePanel un controllo Image (figura 4).

Figura 4

I controlli aggiuntivi

A questo punto, per poter permettere al sistema di funzionare correttamente, abbiamo bisogno ancora di due controlli che non hanno alcuna funzione estetica particolare, ma che svolgono un ruolo funzionale e di supporto al meccanismo di funzionamento del modulo. I due controlli sono due semplici etichette Label, di cui andremo a vedere a breve la collocazione e l'utilità.

Affinché il modulo possa correttamente svolgere il suo compito, è necessario che al suo avvio (quando la pagina viene visualizzata) si conoscano il numero di file destinati ad essere visualizzati nella galleria e a quale numero di immagine ci si trova in ogni istante. Quest'ultimo concetto può essere meglio spiegato con l'ausilio di un piccolo esempio. Supponiamo di avere dieci immagini che devono essere visualizzate in sequenza nella galleria fotografica e di aver impostato il controllo Timer a 3000 millisecondi; ciò vuol dire che il modulo cambierà immagine ogni tre secondi. Quando il modulo viene avviato, ci troviamo a visualizzare subito la prima immagine delle dieci, dopo tre secondi si visualizzerà la seconda immagine e così via. Queste informazioni, ovvero quale immagine viene visualizzata e il numero totale di file, ci occorrono per poter predisporre la chiamata all'immagine successiva e per conoscere quando siamo giunti al termine della sequenza per sapere se riavviare o arrestare la visualizzazione. Per gestire il contatore delle immagini in visualizzazione, basterà semplicemente che ad ogni evento del Timer venga incrementato di un'unità il suo valore contenuto in una delle due Label menzionate in precedenza.

I due controlli Label servono infatti alla raccolta e al mantenimento di queste due vitali informazioni. I due controlli in questo esempio sono stati denominati come segue:

  • lblContatore: rappresenta l'etichetta destinata a contenere il numero progressivo dell'immagine in corso di visualizzazione; questo controllo va posizionato all'interno dell'UpdatePanel;
  • lblNumFiles: rappresenta l'etichetta destinata a contenere il numero totale di file che la galleria è destinata a mostrare e che, come detto, vanno collocati nella cartella contenitore di cui abbiamo parlato precedentemente; questo controllo va posizionato all'esterno dell'UpdatePanel.

Ci si potrebbe chiedere perché abbiamo deciso di collocare i due valori in controlli di tipo Label e non in variabili di pagina o di sessione. Il primo caso, variabili di pagina, non è percorribile a causa del fatto che queste verrebbero continuamente svuotate e poste al loro valore iniziale ad ogni postback della pagina. Nulla impedisce invece di utilizzare variabili di sessione, anche se come approccio è sconsigliato, in particolare nel caso di gestione dello stato della sessione nella modalità inProc che, come ben si sa, in taluni casi potrebbe causare la perdita dei valori con conseguente effetto di cattivo funzionamento della galleria.

La decisione di usare le Label deriva principalmente dal fatto che chi scrive, per stile proprio di programmazione, fa un uso più che parsimonioso delle variabili di sessione, ritenendo che questa tecnica sia dispersiva da un punto di vista del controllo globale del codice. In questo specifico caso, dal momento che l'articolo vuole presentarsi come elemento didattico e di base per ulteriori sviluppi e per chi magari è alle prime armi, i controlli di tipo Label rappresentano una soluzione ottimale per via della loro semplicità di gestione e della loro "tangibilità" rispetto alla astrattezza delle variabili. In fase di progettazione e di lavorazione, mantenendo i controlli Label visibili sulla pagina, senza bisogno di alcuna riga aggiuntiva di codice, è quindi possibile avere una visione effettiva del divenire e del funzionamento della galleria. A runtime infatti possiamo visualizzare nelle Label i dati di processo che cambiano, mostrando parte della logica di base e di funzionamento del modulo, come se di una automobile si potessero vedere in trasparenza il flusso di carburante che scorre ed i pistoni che girano.

3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>

Attenzione: Questo articolo contiene un allegato

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.
Drachetto scrive:
Galleria fotografica dinamica con ASP.NET AJAX

Articolo ottimo, con spiegazioni molto chiare che possono aiutare anche i neofiti. Ottimo lavoro!
mercoledì 30 luglio 2008 | 1 risposta

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.

TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC