Visitatori: 564
Nella precedente lezione abbiamo visto come inserire un record tramite DataSet servendoci di un DetailsView.
In questa lezione vedremo come aggiornare un record.
Come abbiamo già detto i metodi e le istruzioni di INSERT, UPDATE E DELETE sono già disponibili nel Table Adapter per cui dobbiamo solo configurare il DetailsView in modo corretto.
Tuttavia rispetto all'inserimento la modifica richiede una variazione al nostro DataSet. Infatti per poter modificare una News il TableAdapter deve avere un metodo che restituisce una News dato il suo id_news.
Per fare questo dobbiamo aggiungere una query al TableAdapter delle News:
Nella prima schermata scegliamo di usare un'istruzione SQL (potevamo anche creare una StoreProcedure ma questo lo vedremo più avanti).
Scegliamo come tipo di comando SELECT che restituisce righe:
Specifichiamo quindi il nostro comando SQL aggiungendo il parametro id_news:
Clicchiamo su avanti e denominiamo i due metodi Fill (che riempe una data table) e Get (che restituisce una data table) come in figura:
Cliccate quindi su avanti per completare la procedura:
Possiamo vedere che il metodo è stato aggiunto al TableAdapter delle News. Salvate quindi le modifiche al DataSet:
A questo punto siamo pronti per creare il nostro DetailsView che seleziona la News che vogliamo modificare. Aggiungiamo un nuovo controllo web al nostro progetto e denominiamolo "NewsEditWithDataSet":
Trascinate una label e un DetailsView e poi passate alla configurazione del DataSource:
Scegliamo "Oggetto" come tipo di DataSource in quanto ci consente di gestire il DataSet:
Al punto successivo è necessario selezionare il TableAdapter di interesse. Selezioniamo quello delle News:

Nella parte relativa al comando SELECT adesso avremo 2 comandi:

Selezioniamo GetDataByIdNews e nella schermata successiva scegliamo come origine per il parametro la QueryString come mostrato sotto:

Cliccate su fine. A questo punto il nostro DetailsView avrà la seguente struttura:

Possiamo sicuramente migliorarla. Prima di tutto modifichiamo le colonne rendendo invisibile il campo ID_NEWS e convertite il campo ID_CATEGORIA in un template field. A questo punto modificate il campo modello come visto in questa lezione DETAILSVIEW CON DROPDOWN COLUMN con la differenza che qui abbiamo utilizzato un SqlDataSource mentre voi dovete utilizzare ancora un ObjectDataSource e quindi il TableAdapter delle CATEGORIE_NEWS. Una volta impostati i campi da visualizzare e da cui prendere il valore come sotto:


Quindi modifcate il Databinding della dropdown:

A questo punto terminate le modifche al DetailsView e attivate la modifica::

Quindi impostate il DefaultMode del DetailsView a "Edit":

A questo punto il nostro controllo è pronto per essere inserito in una pagina aspx che riceve dalla query string il parametro id_news e ci sonsentirà di modiifcare la News.

Per esempio potete aggiungere una colonna (di tipo template) alla GridView delle News con un link che reindirizza alla pagina di modifica come abbiamo visto in questa lezione: DETAILSVIEW EDIT PART 2.
Nelle prossime lezioni vedremo altre possibili operazioni con i DataSet.
Lezione precedente | Indice degli articoli | Lezione successiva

|