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.

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).

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
- Realizzare un custom extender AJAX con ASP.NET 3.5
- Nuova build per ASP.NET MVC: Preview 5
- Piccoli grandi VWD Express 2008 crescono
- Prima October Preview per ASP.NET 4.0
- Real Code Birthday: 10 anni!
- Introduzione ad ASP.NET 3.5
- #928 - Proteggere il ViewState di ASP.NET criptandolo
- #944 - Inviare file di grandi dimensioni con un HttpHandler di ASP.NET
- I tanti modi di scrivere con Linq
- Extension Method per semplificare la Reflection
- Rilasciata la preview 1 di ASP.NET Ajax 4.0
- #963 - Intercettare gli eventi LoadComplete e PreRenderComplete da uno user control
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.




Difficoltà
Stampa
Download


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!
Articolo ottimo, con spiegazioni molto chiare che possono aiutare anche i neofiti. Ottimo lavoro!
Continua »»» | Rispondi »»»