Un altro behavior è il FloatingBehavior, tramite il quale si può rendere "dragabile" un pannello. Insieme alla possibilità di chiudere e aprire un pannello, questo behavior può essere utile per permettere all'utente di spostare, in una parte dello schermo, alcuni pannelli.
HTML:
<div id="divFloatingPanel">
<div id="header">click here to drag</div>
...
</div>
XML-SCRIPT:
<control id="divFloatingPanel">
<behaviors>
<floatingBehavior handle="header"/>
</behaviors>
</control>
Nello script XML viene dichiarato il pannello e gli viene associato un floatingBehavior che viene attivato quando si clicca sul div header.
In base ai behavior fin qui esaminati, è possibile fare una considerazione molto importante: ogni comportamento è stato aggiunto senza intaccare minimamente la logica esistente della pagina permettendo così una più facile integrazione con le applicazioni già esistenti.
Framework Server
Sebbene sia molto ricco, il framework lato client utilizza l'approccio AJAX solo per alcune delle sue feature. La maggior parte delle novità per AJAX sono rappresentate dal framework Server. Gli UpdatePanel, gli Extender, i WebService per le Memberhip e Profile API sono le principali novità introdotte.
UpdatePanel
Quando un controllo effettua una richiesta di dati al server, è molto probabile che questi vengano utilizzati per modificare solo lo stato di alcuni, e non tutti, i controlli della pagina; di conseguenza, in un pagina si possono individuare sezioni isolate una dall'altra. Partendo da questa considerazione, si è arrivati al concetto di UpdatePanel.
L'UpdatePanel è un controllo contenitore all'interno del quale i postback vengono soppressi e sostituiti da una chiamata AJAX al server in tutto e per tutto uguale ad un postback classico (quindi invio di viewstate, valori di post, ecc). Lato server, questa differenza non viene considerata e la pagina esegue il suo normale ciclo di vita come se si trattasse di un normale postback eseguendo, quindi, anche gli eventi associati ai controlli che hanno scatenato il postback (click di un bottone, cambio di valore in una combo, ecc).
Al momento di inviare la risposta al client, l'unica cosa che viene effettivamente trasferita è l'HTML compreso nell'UpdatePanel ed il ViewState, mentre il resto della pagina rimane immutato. Grazie a questo approccio, si possono ottenere comportamenti AJAX senza dover conoscere nemmeno una riga di codice Javascript e senza dover modificare la logica di applicazioni esistenti.
HTML:
<atlas:updatepanel id="upnlHeaders" runat="server">
<contenttemplate>
<asp:gridview id="grdHeader" runat="server" allowpaging="True" allowsorting="True? datasourceid="datasource">
</asp:gridview>
</contenttemplate>
</atlas:updatepanel>
Nel codice precedente viene mostrato l'uso di un UpdatePanel. Innanzitutto si dichiara un UpdatePanel e al suo interno si usa il ContentTemplate che contiene l'HTML ed i controlli che fanno parte della sezione. Nel caso in questione viene dichiarato un GridView, legato ad un DataSourceControl, che permette paginazione e ordinamento senza postback completo e senza codice nè lato client nè lato server.
Di default, un UpdatePanel si aggiorna quando un controllo al suo interno scatena un PostBack, ma questo a volte può essere limitativo. Ad esempio, potremmo avere un UpdatePanel che deve aggiornarsi al click di un bottone che si trova all'esterno. Gli UpdatePanel risolvono elegantemente questo inconveniente mettendo a disposizione i Trigger, tramite i quali viene notificato al server che nell'HTML da inviare al client deve essere incluso anche quello dell'UpdatePanel che li contiene.
Un caso dove possono tornare utili i trigger è in una pagina con due GridView in Master-Detail contenuti in due UpdatePanel diversi. La griglia con le righe di dettaglio deve essere aggiornata solo quando si seleziona una riga dalla griglia master e non quando questa viene paginata o ordinata. Tramite i trigger è possibile impostare l'aggiornamento automatico del panel contenente i dati di dettaglio al verificarsi dell'evento RowCommand della tabella master come mostrato nell'esempio seguente.
HTML:
<atlas:updatepanel id="upnlDetails" runat="server" mode="Conditional">
<contenttemplate>
<asp:gridview id="grdDetails" runat="server" datasourceid="dsDetails"></asp:gridview>
</contenttemplate>
<triggers>
<atlas:controleventtrigger controlid="grdHeader" eventname="RowCommand" />
</triggers>
</atlas:updatepanel>
Contenuti dell'articolo
- Pagina 1
- Pagina 4
- Pagina 5
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.








Difficoltà
Contenuti
Stampa
Download 



