Controlli DataSource in ASP.NET 2.0

di Cristian Civera, in ASP.NET 2.0,

La missione primaria della versione 2.0 di ASP.NET è quella di rendere noi sviluppatori webancora più produttivi. Questo obiettivo è stato perseguito introducendo nuove classi e controlliancora più potenti volti a limitare la quantità di codice .NET che solitamenteci troviamo a scrivere.

Una delle caratteristiche principali delle applicazioni web è il caricamento didati provenienti sia da database, sia da file o sorgenti XML residenti sulweb. Una volta recuperati i dati, questi vengono solitamente caricati tramite controllicome Repeater, GridView o ListControl e possono subire modifiche e cancellazioni. Tuttaquesta logica è stata unificata con un sistema indipendente dalla sorgentedati, attraverso l'introduzione di nuovi controlli che possono essere identificati colnome di DataSource. Si tratta di oggetti Control che non renderizzano codiceHTML/XHTML, ma che possono essere dichiarati nella pagina ASPX così come un qualsiasialtro controllo e godono della possibilità di essere istanziati e inizializzatidal motore di ASP.NET. Utilizzando i controlli DataSource insieme ai controlli DataBoundprima citati diventa possibile visualizzare e modificare la sorgente dati inmodo del tutto automatico.

Esempio: caricamento di dati dal database

Per capire subito i vantaggi dei controlli DataSource iniziamo con un esempio cheprevede il caricamento dal database di una lista di record. Innanzitutto dichiariamola sorgente dati, in questo caso SqlDataSource perché proveniente da SQL Server, indicandocon la proprietà SelectCommand la query da eseguire per interrogare il database:

<asp:SqlDataSource ID="sqlSource" runat="server" ConnectionString="DataSource=(local)..."
    SelectCommand="SELECT [CustomerID], [CompanyName], [ContactName], [ContactTitle] FROM [Customers]">
</asp:SqlDataSource>

Una volta dichiarata la sorgente, possiamo usare uno dei tanti controlli dotati della proprietà DataSourceID che sanno lavorare con essa.

<asp:GridView runat="server" DataSourceID="sqlSource" DataKeyNames="CustomerID" AutoGenerateColumns="False">
    <Columns>
    <asp:BoundField DataField="CompanyName" HeaderText="CompanyName" />
    <asp:BoundField DataField="ContactName" HeaderText="ContactName" />
    <asp:BoundField DataField="ContactTitle" HeaderText="ContactTitle" />
    <asp:CommandField ShowEditButton="True" />
    <asp:CommandField ShowDeleteButton="True" />
    </Columns>
</asp:GridView>

Senza scrivere nessuna riga di codice, eseguiamo la pagina e questo è il risultato.

Figura 1

Il controllo GridView, una volta associata la sorgente, è in grado non solo di autocaricarsi,ma anche di cancellare, inserire o modificare un record, demandando queste operazionial DataSource collegato.

Struttura dei DataSource

In ASP.NET 2.0 sono presenti due tipologie principali di DataSource definite tramite altrettante interfacce:

  • IDataSource: rappresenta dati flat, come le tabelle di un database;
  • IHierachicalDataSource: rappresenta dati con strutture ad albero, come, per esempio, XML.

Entrambe dispongono di un'implementazione base per renderle istanziabili come gli altricontrolli web, ma possono essere anche specializzate a seconda della sorgente dati.

  • DataSourceControl
    • SqlDataSource: per accedere a SQL Server;
    • AccessDataSource: per accedere a database Access;
    • ObjectDataSource: per lavorare con strati di accesso ai dati, da usare con le applicazioni three-layer.
  • HierarchicalDataSourceControl
    • XmlDataSource: carica e restituisce nodi XML;
    • SiteMapDataSource: sfrutta i SiteMapProvider per fornire una mappa gerarchica del sito.

IHierachicalDataSource definisce un solo membro GetHierarchicalView e riceve unastringa rappresentante il percorso della sorgente dati che vogliamo ottenere. Ilmetodo restituisce un HierarchicalDataSourceView che rappresenta quella porzionedi dati gerarchici.

IDataSource invece definisce due membri, il primo per richiedere la lista delle viste supportate(solitamente una sola), GetViewNames, l'altro per recuperare la lista specifica,GetView, che restituisce un DataSourceView. Questo oggetto può essere molto complessopoiché a differenza di quello gerarchico, oltre al Select, è dotato dei metodi: Update, Delete, Insert.Ad essi è possibile associare un metodo callback da richiamare qualora il comando vada o meno a buon fine.

IDataSource include proprietà come CanDelete, CanInsert, CanPage, CanRetrieveTotalRowCount,CanSort per far conoscere a chi lo utilizza se cancellazione, inserimento,paginazione, recupero totale delle righe e ordinamento sono supportati. E' possibile inoltre intercettarel'evento DataSourceViewChanged per essere notificati del cambiamento della sorgenteo delle modalità di filtro e ordinamento.

3 pagine in totale: 1 2 3

Attenzione: Questo articolo contiene un allegato.

Contenuti dell'articolo

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