Visitatori: 971
Nella scorsa lezione abbiamo creato il database di test che ci servirà per creare il nostro DataSet.
Per aggiungere un DataSet al nostro Sito Web selezioniamo aggiungi nuovo elemento da esplora soluzioni:
Selezioniamo DataSet e diamo lo stesso nome del Database (è solo una convenzione adotatta da noi):
Confermando l'operazione VWD vi chiederà se volete salvare il DataSet in una cartella denominata App_Code. Confermate questa scelta in quanto molti siti di Hosting prevedono che il DataSet venga posizionato in una cartella così denominata.
L'area di progettazione apparirà adesso come mostrato in figura sotto:

Come VWD ci suggerisce possiamo trascinare gli elementi del Database direttamente dalla finestra "Esplora Database" a cui nelle lezioni precedenti abbiamo aggiunto la connessione al nostro TestDB:

Da Esplora Database possiamo esaminare la struttura del DB e selezionare le tabelle opportune. Selezioniamo tutte e 4 le cartelle selezionando la prima e quindi, tenendo premuto il tasto shift, l'ultima, dopodichè trascinatele sull'area di progettazione del DataSet:

Poichè abbiamo creato le chiavi esterne nel Database queste vengono evidenziate anche nel DataSet.
Potete notare che per ogni tabella del database è stata creata una DataTable e il corrispondente TableAdapter. Il TableAdapter è un componente del Framework .NET che ci consente di collegarci ad un Database ed eseguire query o storeprocedure restituendo una DataTable o popolandone una esistente (metodo Fill che vedremo più avanti).
I TableAdapter vengono inoltre utilizzati per aggiornare i dati sul Database qualora vengano effettuate delle modifiche, prevedono infatti i metodi INSERT, UPDATE E DELETE.
I TableAdapter sono molto potenti in quanto consentono di gestire diverse query (al contrario del DataAdapter appartenente alle versioni precedenti del Framework) purchè restituiscano un risultato conforme alla DataTable associata (ovvero stessi campi e tipi di dati).
Come abbiamo detto i TableAdapter restituiscono o popolano una DataTable. Possiamo quindi utilizzare questa DataTable come DataSource di una GridView per esempio.
Vediamo un esempio pratico: creiamo un nuovo controllo utente che chiamiamo WCNewsListDataSet.ascx che visualizzerà in una GridView le News contenute nella Tabella News:

Aggiungiamo una label in alto e impostiamo la proprietà Text a "GRIDVIEW BASATA SU DATASET", poi trasciniamo sotto una GridView.

A questo punto dovrete già sapere come associare un'origine dati ad una GridView. Fino ad ora abbiamo sempre associato sorgenti di tipo SqlDataSource in quanto agivamo direttamente sul Database. In questo caso dobbiamo passare attraverso uno strato intermedio tra il Database e l'applicazione che è appunto il DataSet (rappresenta un modello molto semplificato dell'architettura a 3 livelli).
Per utilizzare un DataSet come sorgente dati occore utilizzare il tipo ObjectDataSource. Chiamiamo la nostra origine dati ObjectDataSourceNews:

Nella schermata successiva ci viene chiesto quale TableAdapter utilizzare. Selezioniamo quello relativo alle News:

Ci verranno quindi mostrati i metodi SELECT, UPDATE, INSERT E DELETE che sono stati creati con il NewsTableAdapter




Confermiamo cliccando su "fine". La nostra GridView viene riempita automaticamente con le colonne restituite dal metodo GetData() specificato nella clausola SELECT.

Adesso aggiungiamo una pagina Web al nostro sito denominata NewsListDataSet.aspx a cui aggiungeremo il controllo web appena creato:


A questo punto impostate questa pagina come pagina iniziale del Sito e mandate in esecuzione l'applicazione (se il DB di test è vuoto aggiungete qualche categoria news e almeno una news associata ad una categoria):

Avete visto come è davvero semplice realizzare applicazioni web utilizzando i DataSet.
Certo noterete la poco elegante visualizzazione dell'ID_CATEGORIA al posto della descrizione categoria. Tuttavia con i DataSet è molto semplice risolvere questo tipo di problemi. Basta agire direttamente dalla DataTable corrispondente aggiungendo una colonna DESCRIZIONE_CATEGORIA e modificando il metodo GetData() in modo che restituisca anche la descrizione della CATEGORIA.
Nella prossima lezione vedremo appunto come applicare queste modifiche.
Lezione precedente | Indice degli articoli | Lezione successiva

|