Condividi tramite


Inserimento, aggiornamento ed eliminazione dei dati con SqlDataSource (VB)

di Scott Mitchell

Scarica il PDF

Nelle esercitazioni precedenti si è appreso come il controllo ObjectDataSource ha consentito l'inserimento, l'aggiornamento e l'eliminazione dei dati. Il controllo SqlDataSource supporta le stesse operazioni, ma l'approccio è diverso e questa esercitazione illustra come configurare SqlDataSource per inserire, aggiornare ed eliminare dati.

Introduzione

Come illustrato in Una panoramica dell'inserimento, dell'aggiornamento e dell'eliminazione, il controllo GridView offre funzionalità predefinite di aggiornamento ed eliminazione, mentre i controlli DetailsView e FormView includono il supporto per l'inserimento insieme alla funzionalità di modifica ed eliminazione. Queste funzionalità di modifica dei dati possono essere collegate direttamente a un controllo origine dati senza dover scrivere una riga di codice. Panoramica dell'inserimento, dell'aggiornamento e dell'eliminazione esaminati tramite ObjectDataSource per facilitare l'inserimento, l'aggiornamento e l'eliminazione con i controlli GridView, DetailsView e FormView. In alternativa, è possibile usare SqlDataSource al posto di ObjectDataSource.

Tenere presente che per supportare l'inserimento, l'aggiornamento e l'eliminazione, con ObjectDataSource è necessario specificare i metodi del livello oggetto da richiamare per eseguire l'azione di inserimento, aggiornamento o eliminazione. Con SqlDataSource è necessario fornire INSERTistruzioni , UPDATEe DELETE SQL (o stored procedure) da eseguire. Come illustrato in questa esercitazione, queste istruzioni possono essere create manualmente o possono essere generate automaticamente dalla procedura guidata Configura origine dati di SqlDataSource.

Nota

Poiché sono già state illustrate le funzionalità di inserimento, modifica ed eliminazione dei controlli GridView, DetailsView e FormView, questa esercitazione è incentrata sulla configurazione del controllo SqlDataSource per supportare queste operazioni. Se è necessario implementare queste funzionalità all'interno di GridView, DetailsView e FormView, tornare alle esercitazioni Su modifica, inserimento ed eliminazione di dati, a partire da Una panoramica dell'inserimento, dell'aggiornamento e dell'eliminazione.

Passaggio 1: Specifica delle istruzioni INSERT, UPDATE e DELETE

Come illustrato nelle due esercitazioni precedenti, per recuperare i dati da un controllo SqlDataSource è necessario impostare due proprietà:

  1. ConnectionString, che specifica il database a cui inviare la query e
  2. SelectCommand, che specifica l'istruzione SQL ad hoc o il nome della stored procedure da eseguire per restituire i risultati.

Per SelectCommand i valori con parametri, i valori dei parametri vengono specificati tramite l'insieme SqlDataSource SelectParameters e possono includere valori hardcoded, valori di origine dei parametri comuni (campi querystring, variabili di sessione, valori del controllo Web e così via) o possono essere assegnati a livello di codice. Quando il metodo del Select() controllo SqlDataSource viene richiamato a livello di codice o automaticamente da un controllo Web dati viene stabilita una connessione al database, i valori dei parametri vengono assegnati alla query e il comando viene distribuito al database. I risultati vengono quindi restituiti come DataSet o DataReader, a seconda del valore della proprietà del DataSourceMode controllo.

Oltre a selezionare i dati, il controllo SqlDataSource può essere usato per inserire, aggiornare ed eliminare dati fornendo INSERTistruzioni , UPDATEe DELETE SQL in modo molto simile. È sufficiente assegnare le InsertCommandproprietà , UpdateCommande DeleteCommand alle INSERTistruzioni , UPDATEe DELETE SQL da eseguire. Se le istruzioni includono parametri (come sempre), includerli nelle InsertParametersraccolte , UpdateParameterse DeleteParameters .

Dopo aver specificato un InsertCommandvalore , UpdateCommando DeleteCommand , l'opzione Abilita inserimento, Abilita modifica o Abilita eliminazione nello smart tag del controllo Web dati corrispondente diventerà disponibile. Per illustrare questo problema, si prenda un esempio dalla Querying.aspx pagina creata nell'esercitazione Querying Data with the SqlDataSource Control (Querying Data with the SqlDataSource Control) (Eseguire query sui dati con l'esercitazione Sul controllo SqlDataSource e aumentarla per includere le funzionalità di eliminazione).

Per iniziare, aprire le InsertUpdateDelete.aspx pagine e Querying.aspx dalla SqlDataSource cartella . Dal Designer nella Querying.aspx pagina selezionare SqlDataSource e GridView nel primo esempio (i ProductsDataSource controlli e GridView1 ). Dopo aver selezionato i due controlli, passare al menu Modifica e scegliere Copia (oppure premere CTRL+C). Passare quindi alla Designer di InsertUpdateDelete.aspx e incollare i controlli. Dopo aver spostato i due controlli in InsertUpdateDelete.aspx, testare la pagina in un browser. Verranno visualizzati i valori delle ProductIDcolonne , ProductNamee UnitPrice per tutti i record nella tabella di Products database.

Tutti i prodotti sono elencati, ordinati per ProductID

Figura 1: Tutti i prodotti sono elencati, ordinati per ProductID (fare clic per visualizzare l'immagine a dimensione intera)

Aggiunta delle proprietà DeleteCommand e DeleteParameters di SqlDataSource

A questo punto è disponibile un oggetto SqlDataSource che restituisce semplicemente tutti i record della Products tabella e un controllo GridView che esegue il rendering di questi dati. L'obiettivo è estendere questo esempio per consentire all'utente di eliminare i prodotti tramite GridView. A tale scopo, è necessario specificare i valori per le proprietà e s DeleteCommand del DeleteParameters controllo SqlDataSource e quindi configurare GridView per supportare l'eliminazione.

Le DeleteCommand proprietà e DeleteParameters possono essere specificate in diversi modi:

  • Tramite la sintassi dichiarativa
  • Dalla Finestra Proprietà nel Designer
  • Nella schermata Specificare un'istruzione SQL personalizzata o una stored procedure nella procedura guidata Configura origine dati
  • Tramite il pulsante Avanzate nella schermata Specifica colonne da una tabella di visualizzazione della procedura guidata Configura origine dati, che genererà automaticamente l'istruzione SQL e la DELETEDeleteCommand raccolta di parametri utilizzata nelle proprietà e e DeleteParameters

Si esaminerà come creare automaticamente l'istruzione DELETE nel passaggio 2. Per il momento, è possibile usare il Finestra Proprietà nella Designer, anche se l'opzione Configura origine dati o sintassi dichiarativa funziona anche.

Dal Designer in InsertUpdateDelete.aspx, fare clic su ProductsDataSource SqlDataSource e quindi visualizzare il Finestra Proprietà (dal menu Visualizza scegliere Finestra Proprietà o semplicemente premere F4). Selezionare la proprietà DeleteQuery, che consente di visualizzare un set di puntini di sospensione.

Screenshot che mostra la Finestra Proprietà ProductsDataSource con la proprietà DeleteQuery selezionata.

Figura 2: Selezionare la proprietà DeleteQuery dalla finestra Proprietà

Nota

SqlDataSource non dispone di una proprietà DeleteQuery. DeleteQuery è invece una combinazione delle DeleteCommand proprietà e e DeleteParameters viene elencata solo nella Finestra Proprietà quando si visualizza la finestra tramite il Designer. Se si esamina il Finestra Proprietà nella visualizzazione Origine, si troverà invece la DeleteCommand proprietà .

Fare clic sui puntini di sospensione nella proprietà DeleteQuery per visualizzare la finestra di dialogo Comando e parametro Editor (vedere la figura 3). In questa finestra di dialogo è possibile specificare l'istruzione DELETE SQL e specificare i parametri. Immettere la query seguente nella casella di testo del DELETE comando (manualmente o usando Generatore query, se si preferisce):

DELETE FROM Products
WHERE ProductID = @ProductID

Fare quindi clic sul pulsante Aggiorna parametri per aggiungere il @ProductID parametro all'elenco dei parametri riportato di seguito.

Screenshot che mostra la finestra Editor Command and Parameter con il parametro <span class=@ProductID aggiunto all'elenco dei parametri di comando DELETE." />

Figura 3: Selezionare la proprietà DeleteQuery dalla finestra Proprietà (fare clic per visualizzare l'immagine a dimensione intera)

Non specificare un valore per questo parametro (lasciare l'origine parametro in None ). Dopo aver aggiunto il supporto per l'eliminazione a GridView, GridView fornirà automaticamente questo valore di parametro, usando il valore della relativa DataKeys raccolta per la riga su cui è stato fatto clic sul pulsante Elimina.

Nota

Il nome del parametro usato nella DELETE query deve corrispondere al nome del DataKeyNames valore in GridView, DetailsView o FormView. Ovvero, il parametro nell'istruzione DELETE è denominato @ProductID intenzionalmente (anziché, ad esempio , @ID), perché il nome della colonna chiave primaria nella tabella Products (e quindi il valore DataKeyNames in GridView) è ProductID.

Se il nome e DataKeyNames il valore del parametro non corrispondono, GridView non può assegnare automaticamente il parametro al valore della DataKeys raccolta.

Dopo aver immesso le informazioni relative all'eliminazione nella finestra di dialogo Comando e parametro Editor fare clic su OK e passare alla visualizzazione Origine per esaminare il markup dichiarativo risultante:

<asp:SqlDataSource ID="ProductsDataSource" runat="server"
    ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>"
    SelectCommand=
        "SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]"
    DeleteCommand="DELETE FROM Products WHERE ProductID = @ProductID">
    <DeleteParameters>
        <asp:Parameter Name="ProductID" />
    </DeleteParameters>
</asp:SqlDataSource>

Prendere nota dell'aggiunta della DeleteCommand proprietà, nonché della <DeleteParameters> sezione e dell'oggetto Parameter denominato productID.

Configurazione di GridView per l'eliminazione

Dopo aver aggiunto la DeleteCommand proprietà, lo smart tag di GridView contiene ora l'opzione Abilita eliminazione. Andare avanti e selezionare questa casella di controllo. Come illustrato in Panoramica dell'inserimento, dell'aggiornamento e dell'eliminazione, gridView aggiunge un oggetto CommandField con la relativa ShowDeleteButton proprietà impostata su True. Come illustrato nella figura 4, quando la pagina viene visitata tramite un browser è incluso un pulsante Elimina. Testare questa pagina eliminando alcuni prodotti.

Ogni riga gridView include ora un pulsante Elimina

Figura 4: Ogni riga gridView include ora un pulsante Elimina (fare clic per visualizzare l'immagine a dimensione intera)

Quando si fa clic su un pulsante Elimina, si verifica un postback, GridView assegna al parametro il ProductID valore della DataKeys raccolta per la riga su cui è stato fatto clic sul pulsante Delete e richiama il metodo s Delete() SqlDataSource. Il controllo SqlDataSource si connette quindi al database ed esegue l'istruzione DELETE . GridView esegue quindi nuovamente l'associazione a SqlDataSource, recuperando e visualizzando il set corrente di prodotti (che non include più il record appena eliminato).

Nota

Poiché GridView usa la raccolta DataKeys per popolare i parametri SqlDataSource, è fondamentale impostare la proprietà GridView DataKeyNames sulle colonne che costituiscono la chiave primaria e che sqlDataSource SelectCommand restituisce queste colonne. Inoltre, è importante che il nome del parametro in SqlDataSource s DeleteCommand sia impostato su @ProductID. Se la DataKeyNames proprietà non è impostata o il parametro non è denominato @ProductsID, facendo clic sul pulsante Elimina verrà generato un postback, ma non eliminerà effettivamente alcun record.

La figura 5 illustra questa interazione graficamente. Fare riferimento all'esercitazione Analisi degli eventi associati all'inserimento, all'aggiornamento e all'eliminazione per una discussione più dettagliata sulla catena di eventi associati all'inserimento, all'aggiornamento e all'eliminazione da un controllo Web dati.

Facendo clic sul pulsante Elimina in GridView richiama il metodo Delete() di SqlDataSource

Figura 5: Fare clic sul pulsante Elimina in GridView richiama il metodo sqlDataSource Delete()

Passaggio 2: Generazione automatica delle INSERTistruzioni , UPDATEe DELETE

Durante l'esame del passaggio 1, INSERTle istruzioni , UPDATEe DELETE SQL possono essere specificate tramite la Finestra Proprietà o la sintassi dichiarativa del controllo. Tuttavia, questo approccio richiede di scrivere manualmente le istruzioni SQL, che possono essere monotono e soggette a errori. Fortunatamente, la procedura guidata Configura origine dati offre un'opzione per fare in modo che le INSERTistruzioni , UPDATEe DELETE vengano generate automaticamente quando si usano le colonne Specifica da una tabella della schermata di visualizzazione.

È possibile esplorare questa opzione di generazione automatica. Aggiungere un controllo DetailsView al Designer in InsertUpdateDelete.aspx e impostarne la ID proprietà su ManageProducts. Successivamente, dallo smart tag DetailsView, scegliere di creare una nuova origine dati e creare un oggetto SqlDataSource denominato ManageProductsDataSource.

Creare un nuovo oggetto SqlDataSource denominato ManageProductsDataSource

Figura 6: Creare un nuovo oggetto SqlDataSource denominato ManageProductsDataSource (fare clic per visualizzare un'immagine di dimensioni intere)

Nella procedura guidata Configura origine dati scegliere di usare il NORTHWINDConnectionString stringa di connessione e fare clic su Avanti. Nella schermata Configura istruzione selezionare il pulsante di opzione Specifica colonne da una tabella o vista e selezionare la Products tabella dall'elenco a discesa. Selezionare le ProductIDcolonne , ProductName, UnitPricee Discontinued dall'elenco delle caselle di controllo.

Utilizzando la tabella Products, restituire le colonne ProductID, ProductName, UnitPrice e Discontinued

Figura 7: Utilizzo della Products tabella, restituire le ProductIDcolonne , ProductName, UnitPricee Discontinued (fare clic per visualizzare l'immagine a dimensione intera)

Per generare INSERTautomaticamente istruzioni , UPDATEe DELETE in base alla tabella e alle colonne selezionate, fare clic sul pulsante Avanzate e selezionare la casella di controllo Genera INSERTistruzioni , UPDATEe DELETE .

Selezionare la casella di controllo Genera istruzioni INSERT, UPDATE e DELETE

Figura 8: Selezionare la casella di controllo Genera INSERTistruzioni , UPDATEe DELETE

La casella di controllo Genera INSERTistruzioni , UPDATEe DELETE sarà selezionabile solo se la tabella selezionata ha una chiave primaria e la colonna chiave primaria (o colonne) sono incluse nell'elenco delle colonne restituite. La casella di controllo Usa concorrenza ottimistica, che diventa selezionabile dopo che la casella di controllo Genera INSERTistruzioni , UPDATEe DELETE è stata selezionata, aumenta le WHERE clausole nelle istruzioni e DELETE risultanti UPDATE per fornire il controllo della concorrenza ottimistica. Per il momento, lasciare deselezionata questa casella di controllo; Si esaminerà la concorrenza ottimistica con il controllo SqlDataSource nell'esercitazione successiva.

Dopo aver selezionato la casella di controllo Genera INSERTistruzioni , UPDATEe DELETE fare clic su OK per tornare alla schermata Configura istruzione seleziona, quindi fare clic su Avanti e quindi su Fine per completare la procedura guidata Configura origine dati. Al termine della procedura guidata, Visual Studio aggiungeRà BoundFields a DetailsView per le ProductIDcolonne , ProductNamee UnitPrice e un checkBoxField per la Discontinued colonna. Dallo smart tag DetailsView selezionare l'opzione Abilita paging in modo che l'utente che visita questa pagina possa scorrere i prodotti.From the DetailsView s smart tag, check the Enable Paging option so that the user visit this page can step through the products. Cancellare anche le proprietà e detailsView WidthHeight .

Si noti che lo smart tag include le opzioni Abilita inserimento, Abilita modifica e Abilita eliminazione disponibili. Ciò avviene perché SqlDataSource contiene i valori per InsertCommand, UpdateCommande DeleteCommand, come illustrato nella sintassi dichiarativa seguente:

<asp:DetailsView ID="ManageProducts" runat="server" AllowPaging="True"
    AutoGenerateRows="False" DataKeyNames="ProductID"
    DataSourceID="ManageProductsDataSource" EnableViewState="False">
    <Fields>
        <asp:BoundField DataField="ProductID" HeaderText="ProductID"
            InsertVisible="False" ReadOnly="True" SortExpression="ProductID" />
        <asp:BoundField DataField="ProductName" HeaderText="ProductName"
            SortExpression="ProductName" />
        <asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice"
            SortExpression="UnitPrice" />
        <asp:CheckBoxField DataField="Discontinued" HeaderText="Discontinued"
            SortExpression="Discontinued" />
    </Fields>
</asp:DetailsView>
<asp:SqlDataSource ID="ManageProductsDataSource" runat="server"
    ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>"
    DeleteCommand=
        "DELETE FROM [Products] WHERE [ProductID] = @ProductID"
    InsertCommand=
        "INSERT INTO [Products] ([ProductName], [UnitPrice], [Discontinued])
         VALUES (@ProductName, @UnitPrice, @Discontinued)"
    SelectCommand=
        "SELECT [ProductID], [ProductName], [UnitPrice], [Discontinued]
         FROM [Products]"
    UpdateCommand=
        "UPDATE [Products] SET [ProductName] = @ProductName,
         [UnitPrice] = @UnitPrice, [Discontinued] = @Discontinued
         WHERE [ProductID] = @ProductID">
    <DeleteParameters>
        <asp:Parameter Name="ProductID" Type="Int32" />
    </DeleteParameters>
    <UpdateParameters>
        <asp:Parameter Name="ProductName" Type="String" />
        <asp:Parameter Name="UnitPrice" Type="Decimal" />
        <asp:Parameter Name="Discontinued" Type="Boolean" />
        <asp:Parameter Name="ProductID" Type="Int32" />
    </UpdateParameters>
    <InsertParameters>
        <asp:Parameter Name="ProductName" Type="String" />
        <asp:Parameter Name="UnitPrice" Type="Decimal" />
        <asp:Parameter Name="Discontinued" Type="Boolean" />
    </InsertParameters>
</asp:SqlDataSource>

Si noti che il controllo SqlDataSource ha impostato automaticamente i valori per le InsertCommandrelative proprietà , UpdateCommande DeleteCommand . Il set di colonne a cui si fa riferimento nelle InsertCommand proprietà e UpdateCommand si basa su quelli nell'istruzione SELECT . Vale a dire, invece di avere ogni colonna Products in InsertCommand e UpdateCommand, sono presenti solo le colonne specificate in SelectCommand ( ProductIDminore , che viene omesso perché si tratta di una IDENTITY colonna, il cui valore non può essere modificato quando viene modificato e che viene assegnato automaticamente durante l'inserimento). Inoltre, per ogni parametro nelle InsertCommandproprietà , UpdateCommande DeleteCommand sono presenti parametri corrispondenti nelle InsertParametersraccolte , UpdateParameterse DeleteParameters .

Per attivare le funzionalità di modifica dei dati di DetailsView, selezionare le opzioni Abilita inserimento, Abilita modifica e Abilita eliminazione nello smart tag. In questo modo viene aggiunto un oggetto CommandField con ShowInsertButtonle proprietà , ShowEditButtone ShowDeleteButton impostate su True.

Visitare la pagina in un browser e prendere nota dei pulsanti Modifica, Elimina e Nuovo inclusi in DetailsView. Facendo clic sul pulsante Modifica, DetailsView viene attivata la modalità di modifica, che visualizza ogni BoundField la cui ReadOnly proprietà è impostata False su (impostazione predefinita) come controllo TextBox e checkBoxField come casella di controllo.

Interfaccia di modifica predefinita di DetailsView

Figura 9: Interfaccia di modifica predefinita di DetailsView (fare clic per visualizzare l'immagine a dimensione intera)

Analogamente, è possibile eliminare il prodotto attualmente selezionato o aggiungere un nuovo prodotto al sistema. Poiché l'istruzione InsertCommand funziona solo con le ProductNamecolonne , UnitPricee Discontinued , le altre colonne hanno NULL o il valore predefinito assegnato dal database al momento dell'inserimento. Analogamente a ObjectDataSource, se manca InsertCommand qualsiasi colonna della tabella di database che non consente NULL s e non ha un valore predefinito, si verificherà un errore SQL quando si tenta di eseguire l'istruzione INSERT .

Nota

Le interfacce di inserimento e modifica di DetailsView non dispongono di qualsiasi tipo di personalizzazione o convalida. Per aggiungere controlli di convalida o per personalizzare le interfacce, è necessario convertire BoundFields in TemplateFields. Per altre informazioni, vedere l'esercitazione Aggiunta di controlli di convalida alle interfacce di modifica e inserimento e personalizzazione dell'interfaccia di modifica dei dati .

Tenere inoltre presente che per l'aggiornamento e l'eliminazione, DetailsView usa il valore del DataKey prodotto corrente, che è presente solo se la DataKeyNames proprietà è configurata. Se la modifica o l'eliminazione sembra non avere alcun effetto, assicurarsi che la DataKeyNames proprietà sia impostata.

Limitazioni della generazione automatica di istruzioni SQL

Poiché l'opzione Genera INSERTistruzioni , UPDATEe DELETE è disponibile solo quando si selezionano colonne da una tabella, per le query più complesse sarà necessario scrivere istruzioni , UPDATEe DELETE personalizzate INSERTcome nel passaggio 1. In genere, le istruzioni SQL SELECT usano JOIN s per riportare i dati da una o più tabelle di ricerca a scopo di visualizzazione, ad esempio per riportare indietro il campo della tabella durante la Categories visualizzazione delle informazioni sul CategoryName prodotto. Allo stesso tempo, è possibile consentire all'utente di modificare, aggiornare o inserire dati nella tabella principale (Productsin questo caso).

Anche se le INSERTistruzioni , UPDATEe DELETE possono essere immesse manualmente, prendere in considerazione il suggerimento seguente per il risparmio di tempo. Configurare inizialmente SqlDataSource in modo che estrae i dati solo dalla Products tabella. Usare la procedura guidata Configura origine dati specificare le colonne da una schermata di tabella o vista in modo da poter generare automaticamente le INSERTistruzioni , UPDATEe DELETE . Dopo aver completato la procedura guidata, scegliere quindi di configurare SelectQuery dal Finestra Proprietà oppure, in alternativa, tornare alla procedura guidata Configura origine dati, ma usare l'opzione Specificare un'istruzione SQL personalizzata o una stored procedure. Aggiornare quindi l'istruzione SELECT in modo da includere la JOIN sintassi . Questa tecnica offre i vantaggi di risparmio di tempo delle istruzioni SQL generate automaticamente e consente un'istruzione più personalizzata SELECT .

Un'altra limitazione della generazione automatica delle INSERTistruzioni , UPDATEe DELETE è che le colonne nelle INSERT istruzioni e UPDATE sono basate sulle colonne restituite dall'istruzione SELECT . Potrebbe tuttavia essere necessario aggiornare o inserire più o meno campi. Ad esempio, nell'esempio del passaggio 2, potrebbe essere necessario che BoundField UnitPrice sia di sola lettura. In questo caso, non dovrebbe essere visualizzato in UpdateCommand. In alternativa, è possibile impostare il valore di un campo tabella che non viene visualizzato in GridView. Ad esempio, quando si aggiunge un nuovo record, è possibile impostare il QuantityPerUnit valore su TODO .

Se tali personalizzazioni sono necessarie, è necessario renderle manualmente, tramite il Finestra Proprietà, l'opzione Specificare un'istruzione SQL personalizzata o una stored procedure nella procedura guidata o tramite la sintassi dichiarativa.

Nota

Quando si aggiungono parametri che non dispongono di campi corrispondenti nel controllo Web dati, tenere presente che questi valori di parametri dovranno essere assegnati in qualche modo. Questi valori possono essere: hardcoded direttamente in InsertCommand o UpdateCommand, possono provenire da un'origine predefinita (querystring, stato sessione, controlli Web nella pagina e così via) oppure possono essere assegnati a livello di codice, come illustrato nell'esercitazione precedente.

Riepilogo

Per consentire ai controlli Web di dati di utilizzare le funzionalità predefinite di inserimento, modifica ed eliminazione, il controllo origine dati a cui sono associati deve offrire tali funzionalità. Per SqlDataSource, ciò significa che INSERTle istruzioni , UPDATEe DELETE SQL devono essere assegnate alle InsertCommandproprietà , UpdateCommande DeleteCommand . Queste proprietà e le raccolte di parametri corrispondenti possono essere aggiunte manualmente o generate automaticamente tramite la procedura guidata Configura origine dati. In questa esercitazione sono state esaminate entrambe le tecniche.

È stata esaminata l'uso della concorrenza ottimistica con ObjectDataSource nell'esercitazione Implementazione della concorrenza ottimistica . Il controllo SqlDataSource fornisce anche il supporto della concorrenza ottimistica. Come indicato nel passaggio 2, quando si generano automaticamente le INSERTistruzioni , UPDATEe DELETE , la procedura guidata offre un'opzione Usa concorrenza ottimistica. Come illustrato nell'esercitazione successiva, l'uso della concorrenza ottimistica con SqlDataSource modifica le WHERE clausole nelle UPDATE istruzioni e DELETE per assicurarsi che i valori per le altre colonne non siano stati modificati dall'ultima visualizzazione dei dati nella pagina.

Buon programmatori!

Informazioni sull'autore

Scott Mitchell, autore di sette libri ASP/ASP.NET e fondatore di 4GuysFromRolla.com, lavora con le tecnologie Web Microsoft dal 1998. Scott lavora come consulente indipendente, formatore e scrittore. Il suo ultimo libro è Sams Teach Yourself ASP.NET 2.0 in 24 ore. Può essere raggiunto all'indirizzo mitchell@4GuysFromRolla.com. o tramite il suo blog, disponibile all'indirizzo http://ScottOnWriting.NET.