Visitatori: 806
Nella precedente lezione abbiamo visto come modificare un record tramite DataSet servendoci di un DetailsView.
In questa lezione facciamo qualche passo indietro, ovvero torniamo alla nostra GridView delle News e vedremo come abilitare la modifica e la cancellazione delle News direttamente dalla GridView utilizzando i metodi UPDATE e DELETE forniti dal Dataset.
Abbiamo già visto come aggiungere una colonna di tipo template alla gridview che reindirizzava l'utente ad una nuova pagina per la modifica della News (tramite DetailsView).
Creiamo quindi un nuovo controllo web e denominiamolo GridViewNewsEditDelete.ascx:
Trascinate in progetazione una label e una GridView in modo da ottenere questo risultato:
A questo punto configurate l'origine dati della GridView selezionando come tipo di origine "oggetto", scegliendo quindi il Dataset e il NewsTableAdapter:
Cliccando su avanti vedrete che i metodi SELECT, UPDATE, INSERT E DELETE vengono compilati automaticamente dal Dataset per cui non ci resta che abilitare nella GridView le operazioni di cancellazione e modifica come mostra la figura sotto:
Se preferite sposatet la colonna CommandField aggiunta automaticamente da VWD come ultima colonna. Rendete inoltre invisibile la colonna ID_NEWS.
Adesso convertiamo in temnplate il campo ID_CATEGORIA in modo che in fase di edit venga mostrata una DropDownList.
Configurate correttamente l'origine dati della DropDownList collocata al posto del textbox:
Impostate quindi il campo valore e il campo da visualizzare:
A questo punto modificate il databinding della DropDown (dal menu contestuale) impostando il campo ID_CATEGORIA del NewsTAbleAdapter;
Terminate quindi le modifiche al campo modello. Adesso poichè abbiamo convertito il campo ID_CATEGORIA in modello se passate in visualizzazione Origine per visualizzare i Tag ASP vedrete che sono stati aggiunti per tale campo 2 template: <EditItemTempalte> che visualizza la DropSownList e <ItemTemplate> che è quello di Default visualizzato quando la Grid è in stato di lettura. Poichè in fase di lettura non vogliamo visualizzare l'ID_CATEGORIA ma la descrizione (campo DESCRIZIONE_CATEGORIA che avevamo già aggiunto nelle scorse lezioni al TableAdapter delle News), eliminate il campo DESCRIZIONE_CATEGORIA dalle colonne della grid e modificate il bind dell'itemTemplate ella colonna categoria da:
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%#
Bind("ID_CATEGORIA") %>'></asp:Label>
</ItemTemplate>
a
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%#
Bind("DESCRIZIONE_CATEGORIA") %>'></asp:Label>
</ItemTemplate>
A questo punto create una pagina aspx NewsListEdit.aspx e trascinate il controllo web appena creato al suo interno. Dopodichè impostatela come pagina iniziale del sito ed eseguite il progetto:

Provate rispettivamente a modiifcare ed eliminare una news. Per esempio provate a modificare la categoria della prima news e cliccate su aggiorna:

La categoria viene correttamente modifcata:

Provate adesso a eliminare la 3a News::

LA News viene correttamente eliminata.

|