Visitatori: 695
Nella scorsa lezione abbiamo creato il DataSet basato sul database TestDB e abbiamo introdotto il concetto di DataTable e TableAdapter. Vedremo in questa lezione come modificare la DataTable legata alla Tabella News del DB per aggiungere una colonna che visualizzi la descrizione della categoria e non l'ID.
Una cosa molto importante da tener presente è che i metodi di una DataTable devono restituire gli stessi campi elencati nella DataTable (ovvero devono rispettarne lo schema). Se provassimo a modificare la query legata al metodo GetData() per selezionare anche la descrizione categoria con una SUBSELECT (cosa che faremo tra poco) avremmo un errore in quanto Visual Web Developer ci avviserebbe che la colonna DescrizioneCategoria non fa parte dello schema della DataTable.
Per risolvere questo problema è necessario aggiungere una colonna alla DataTAble e dare lo stesso nome del campo selezionato nella SUBSELECT o eventualmente quello dell'Alias di colonna che utilizzeremo (spesso infatti può esserci già un campo con lo stesso nome ed è quindi necessario utilizzare un Alias).
Aggiungiamo quindi un campo DESCRIZIONE_CATEGORIA alla nostra DataTable:
Chiamiamo la colonna DESCRIZIONE_CATEGORIA:
A questo punto modifichiamo il metodo GetData() cliccando col tasto destro del mouse e selezionando "configura":.
VWD ci mostra la query che viene utilizzata dal metodo:

Modifichiamo la query per aggiungere la selezione della descrizione categoria tramite una SUBSELECT:
SELECT ID_NEWS, ID_CATEGORIA,
(SELECT DESCRIZIONE FROM CATEGORIE_NEWS WHERE CATEGORIE_NEWS.ID_CATEGORIA=NEWS.ID_CATEGORIA)
AS DESCRIZIONE_CATEGORIA,
TITOLO, DESCRIZIONE, DATA, ATTIVA FROM dbo.NEWS

A questo punto cliccate su avanti e quindi su fine. Adesso riaprite il WebControl con la lista delle News creato nella lezione precedente:

Dal menu contestuale della GridView selezionate "Configura origine dati..". Selezionate quindi nuovamente il TableAdapter relativo alle News:

Quindi il metodo GetData() che abbiamo appena modificato nella clausola SELECT:

A questo punto cliccate su fine. VWD vi chiederà se volete rigenerare le colonne della GridView. Selezionate !Si" in modo che venga aggiunto il nuovo campo DESCRIZIONE_CATEGORIA:

VWD aggiunge il campo come ultima colonna della gridview:

Selezionate quindi "modifica colonne" dal menu contestuale della GridView:

e nell'ordine:
- RENDETE INVISIBILE LA COLONNA ID_CATEGORIA
- SPOSTATE LA COLONNA DESCRIZIONE_CATEGORIA SUBITO DOPO ID_CATEGORIA

A questo punto mandate nuovamente in esecuzione il progetto:

Avete visto come è davvero semplice personalizzare i metodi di una DataTable modificando le query.
Nella prossima lezione vedremo come inserire dati tramite DataSet.
Lezione precedente | Indice degli articoli | Lezione successiva

|