Sdílet prostřednictvím


Vkládání, aktualizace a odstraňování dat ovládacím prvkem SqlDataSource (VB)

od Scott Mitchell

Stáhnout PDF

V předchozích kurzech jsme se dozvěděli, jak ovládací prvek ObjectDataSource umožňoval vkládání, aktualizaci a odstraňování dat. Ovládací prvek SqlDataSource podporuje stejné operace, ale přístup se liší a v tomto kurzu se dozvíte, jak nakonfigurovat SqlDataSource pro vkládání, aktualizaci a odstraňování dat.

Úvod

Jak je popsáno v části Přehled vložení, aktualizace a odstranění, ovládací prvek GridView poskytuje integrované možnosti aktualizace a odstraňování, zatímco DetailsView a FormView ovládací prvky zahrnují podporu vkládání spolu s úpravami a odstraňováním funkcí. Tyto možnosti úprav dat je možné připojit přímo do ovládacího prvku zdroje dat bez nutnosti zápisu řádku kódu. Přehled vkládání, aktualizace a odstraňování prozkoumaných pomocí ObjectDataSource pro usnadnění vkládání, aktualizace a odstraňování pomocí ovládacích prvků GridView, DetailsView a FormView. Alternativně lze použít SqlDataSource místo ObjectDataSource.

Vzpomeňte si, že pro podporu vkládání, aktualizace a odstraňování s ObjectDataSource jsme potřebovali zadat metody vrstvy objektu, které se mají vyvolat k provedení akce vložení, aktualizace nebo odstranění. U SqlDataSource musíme zadat INSERT, UPDATE a DELETE příkazy SQL (nebo uložené procedury) ke spuštění. Jak uvidíme v tomto kurzu, tyto příkazy je možné vytvořit ručně nebo je může automaticky vygenerovat průvodce konfigurací zdroje dat sqlDataSource.

Poznámka:

Vzhledem k tomu, že jsme už probrali možnosti vkládání, úprav a odstraňování ovládacích prvků GridView, DetailsView a FormView, tento kurz se zaměří na konfiguraci ovládacího prvku SqlDataSource pro podporu těchto operací. Pokud potřebujete oprášit znalosti o implementaci těchto funkcí v GridView, DetailsView a FormView, vraťte se ke kurzům úpravy, vkládání a odstraňování dat, počínaje Přehledem vkládání, aktualizace a odstraňování.

Krok 1: Zadání příkazů INSERT, UPDATE a DELETE

Jak jsme viděli v předchozích dvou kurzech, abychom mohli načíst data z ovládacího prvku SqlDataSource, musíme nastavit dvě vlastnosti:

  1. ConnectionString, která určuje, do jaké databáze se má dotaz odeslat, a
  2. SelectCommand, který určuje ad-hoc příkaz SQL nebo název uložené procedury, která se má provést, aby se vrátily výsledky.

Pro SelectCommand hodnoty s parametry jsou hodnoty parametrů zadány prostřednictvím kolekce SqlDataSource s SelectParameters a mohou obsahovat pevně zakódované hodnoty, běžné hodnoty zdroje parametrů (pole řetězce dotazu, proměnné relace, hodnoty webového ovládacího prvku atd.) nebo lze přiřadit programově. Když je metoda ovládacího prvku Select() SqlDataSource vyvolána buď programově, nebo automaticky z datového webového ovládacího prvku, je navázáno spojení s databází, hodnoty parametrů jsou přiřazeny k dotazu a příkaz je předán do databáze. Výsledky se pak vrátí jako DataSet nebo DataReader v závislosti na hodnotě vlastnosti ovládacího prvku DataSourceMode .

Spolu s výběrem dat lze ovládací prvek SqlDataSource použít k vložení, aktualizaci a odstranění dat zadáním INSERTpříkazů , UPDATEa DELETE SQL stejným způsobem. Jednoduše přiřaďte vlastnostem InsertCommand, UpdateCommand a DeleteCommand SQL příkazy INSERT, UPDATE a DELETE ke spuštění. Pokud příkazy mají parametry (což budou téměř vždy), zahrňte je do kolekcí InsertParameters, UpdateParameters a DeleteParameters.

Jakmile je zadána hodnota InsertCommand, UpdateCommand nebo DeleteCommand, možnost Povolit vložení, Povolit úpravy nebo Povolit odstranění v odpovídající inteligentní značce webového ovládacího prvku dat se zpřístupní. Abychom to mohli ilustrovat, podívejme se na příklad ze Querying.aspx stránky, kterou jsme vytvořili v kurzu dotazování dat pomocí ovládacího prvku SqlDataSource , a rozšiřme je tak, aby zahrnovaly možnosti odstranění.

Začněte tím, že otevřete InsertUpdateDelete.aspx složku a Querying.aspx stránky ze SqlDataSource složky. Na stránce v Návrháři Querying.aspx vyberte ovládací prvky SqlDataSource a GridView z prvního příkladu (ProductsDataSource a GridView1). Po výběru těchto dvou ovládacích prvků přejděte do nabídky Upravit a zvolte Kopírovat (nebo stiskněte Ctrl+C). Dále přejděte do Návrháře ovládacích InsertUpdateDelete.aspx prvků a vložte je. Po přesunutí ovladačů na InsertUpdateDelete.aspx otestujte stránku v prohlížeči. Měli byste vidět hodnoty sloupců ProductID, ProductName a UnitPrice pro všechny záznamy v tabulce databáze Products.

Všechny produkty jsou uvedeny, řazeny podle ID produktu

Obrázek 1: Všechny produkty jsou uvedeny a objednány ProductID (kliknutím zobrazíte obrázek s plnou velikostí)

Přidání vlastností DeleteCommand a DeleteParameters pro SqlDataSource

V tuto chvíli máme SqlDataSource, který jednoduše vrátí všechny záznamy z Products tabulky a GridView, který vykresluje tato data. Naším cílem je rozšířit tento příklad tak, aby uživatel mohl odstraňovat produkty prostřednictvím GridView. Abychom toho dosáhli, musíme zadat hodnoty pro ovládací prvek SqlDataSource s DeleteCommand a DeleteParameters vlastnosti a pak nakonfigurovat GridView tak, aby podporoval odstranění.

Vlastnosti DeleteCommand a DeleteParameters lze zadat několika způsoby:

  • Prostřednictvím deklarativní syntaxe
  • Z okna Vlastnosti v Návrháři
  • Na okně Zadání vlastního příkazu SQL nebo uložené procedury v průvodci konfigurací zdrojů dat
  • Prostřednictvím tlačítka Upřesnit v okně Zadat sloupce z tabulky zobrazení v Průvodci konfigurací zdroje dat, které ve skutečnosti automaticky vygeneruje DELETE příkaz SQL a kolekci parametrů použitou v datech DeleteCommand a DeleteParameters vlastnostech.

Podíváme se, jak automaticky vytvořit DELETE příkaz v kroku 2. Prozatím použijeme okno Vlastnosti v Návrháři, i když průvodce Konfigurací zdroje dat nebo deklarativní syntaxe bude fungovat stejně dobře.

V Návrháři klikněte na InsertUpdateDelete.aspx SqlDataSource a poté otevřete okno Vlastnosti (z nabídky Zobrazit zvolte okno Vlastnosti, nebo jednoduše stiskněte F4). Vyberte vlastnost DeleteQuery, čímž se zobrazí sada tří teček.

Snímek obrazovky s oknem Vlastnosti ProductsDataSource s vybranou vlastností DeleteQuery

Obrázek 2: Výběr vlastnosti DeleteQuery z okna Vlastnosti

Poznámka:

SqlDataSource nemá vlastnost DeleteQuery. Spíše je DeleteQuery kombinací vlastností DeleteCommand a DeleteParameters a je uvedena pouze v okně Vlastnosti při prohlížení přes návrhář. Pokud se díváte na okno Vlastnosti ve zobrazení Zdrojového kódu, místo toho najdete vlastnost DeleteCommand.

Kliknutím na tři tečky ve vlastnosti DeleteQuery otevřete dialogové okno Editor příkazů a parametrů (viz obrázek 3). V tomto dialogovém okně můžete zadat DELETE příkaz SQL a zadat parametry. Do textového DELETE pole příkazu zadejte následující dotaz (pokud chcete, buď ručně, nebo pomocí Tvůrce dotazů):

DELETE FROM Products
WHERE ProductID = @ProductID

Potom kliknutím na tlačítko Aktualizovat parametry přidejte @ProductID parametr do seznamu parametrů níže.

Snímek obrazovky s oknem Editor příkazů a parametrů s parametrem <span class= @ProductID přidaným do seznamu parametrů příkazu DELETE />

Obrázek 3: Výběr vlastnosti DeleteQuery z okna Vlastnosti (kliknutím zobrazíte obrázek s plnou velikostí)

Nezadávejte hodnotu pro tento parametr (nechejte zdroj parametru na hodnotu None). Jakmile přidáme podporu odstranění do GridView, GridView automaticky zadá tuto hodnotu parametru pomocí hodnoty jeho DataKeys kolekce pro řádek, jehož tlačítko Delete bylo kliknuto.

Poznámka:

Název parametru DELETE použitý v dotazu musí být stejný jako název DataKeyNames hodnoty v Objektu GridView, DetailsView nebo FormView. To znamená, že parametr v DELETE příkazu je účelově pojmenovaný @ProductID (místo například @ID), protože název sloupce primárního klíče v tabulce Products (a proto hodnota DataKeyNames v GridView) je ProductID.

Pokud se název a DataKeyNames hodnota parametru neshoduje, gridView nemůže automaticky přiřadit parametr hodnotu z DataKeys kolekce.

Po zadání informací souvisejících s odstraněním do dialogového okna Příkaz a Editor parametrů klepněte na tlačítko OK a přejděte do zobrazení Zdroj a prozkoumejte výsledné deklarativní značky:

<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>

Všimněte si přidání DeleteCommand vlastnosti a <DeleteParameters> oddílu a parametru s názvem productID.

Konfigurace objektu GridView pro odstranění

S přidáním vlastnosti DeleteCommand, inteligentní značka v GridView nyní obsahuje možnost Povolit odstranění. Pokračujte a zaškrtněte toto políčko. Jak je popsáno v části Přehled vložení, aktualizace a odstranění, to způsobí, že GridView přidá CommandField s jeho ShowDeleteButton vlastností nastavenou na True. Jak ukazuje obrázek 4, při návštěvě stránky v prohlížeči je zahrnuto tlačítko Odstranit. Tuto stránku otestujte odstraněním některých produktů.

Každý řádek GridView teď obsahuje tlačítko Odstranit.

Obrázek 4: Každý řádek GridView teď obsahuje tlačítko Odstranit (kliknutím zobrazíte obrázek v plné velikosti).

Po kliknutí na tlačítko Delete dojde k aktualizaci stavu, GridView přiřadí parametru ProductID hodnotu z kolekce DataKeys pro řádek, na jehož tlačítko Delete bylo kliknuto, a vyvolá metodu Delete() SqlDataSource. Ovládací prvek SqlDataSource se pak připojí k databázi a spustí příkaz DELETE . GridView pak znovu propojí s SqlDataSource, vrátí se a zobrazí aktuální sadu produktů (která už neobsahuje právě odstraněný záznam).

Poznámka:

Vzhledem k tomu, že GridView používá svou DataKeys kolekci k naplnění parametrů SqlDataSource, je důležité, aby vlastnost GridView DataKeyNames byla nastavena na sloupce, které tvoří primární klíč a že SqlDataSource SelectCommand vrátí tyto sloupce. Kromě toho je důležité, aby název parametru v SqlDataSource s DeleteCommand je nastaven na @ProductID. DataKeyNames Pokud vlastnost není nastavena nebo parametr není pojmenovaný @ProductsID, kliknutí na tlačítko Odstranit způsobí postback, ale ve skutečnosti neodstraní žádný záznam.

Obrázek 5 znázorňuje tuto interakci graficky. Podrobnější informace o řetězu událostí spojených s vkládáním, aktualizací a odstraňováním z datového ovládacího prvku najdete v kurzu Zkoumání událostí spojených s vkládáním, aktualizací a odstraňováním z datového ovládacího prvku.

Kliknutím na tlačítko Delete v GridView se vyvolá metoda Delete() objektu SqlDataSource.

Obrázek 5: Kliknutí na tlačítko Odstranit v GridView vyvolá metodu SqlDataSource s Delete()

Krok 2: Automatické generování příkazů INSERT, UPDATE a DELETE

Jak se zkoumalo v kroku 1, lze příkazy SQL jako INSERT, UPDATE a DELETE zadat prostřednictvím okna Vlastnosti nebo deklarativní syntaxe ovládacího prvku. Tento přístup ale vyžaduje ruční zápis příkazů SQL, které můžou být monotónní a náchylné k chybám. Průvodce konfigurací zdroje dat naštěstí nabízí možnost automaticky vygenerovat příkazy INSERT, UPDATE a DELETE při použití obrazovky Zadat sloupce z tabulky nebo zobrazení.

Pojďme se podívat na tuto možnost automatického generování. Přidejte DetailsView do Návrháře v InsertUpdateDelete.aspx a nastavte jeho vlastnost ID na ManageProducts. Dále z inteligentní značky ovládacího prvku DetailsView zvolte vytvoření nového zdroje dat a pojmenujte SqlDataSource s názvem ManageProductsDataSource.

Vytvoření nového zdroje SqlDataSource s názvem ManageProductsDataSource

Obrázek 6: Vytvoření nového zdroje SqlDataSource s názvem ManageProductsDataSource (kliknutím zobrazíte obrázek s plnou velikostí)

V průvodci konfigurací zdroje dat zvolte použití připojovacího NORTHWINDConnectionString řetězce a klikněte na Další. Na obrazovce Konfigurace příkazu SELECT ponechte vybraný přepínač Určete sloupce z tabulky nebo zobrazení a vyberte tabulku Products z rozevíracího seznamu. Vyberte sloupce ProductID, ProductName, UnitPrice a Discontinued ze seznamu zaškrtávacích políček.

Použijte tabulku Products (Produkty) a vraťte sloupce ID produktu, Název produktu, Jednotková cena a „Ukončeno“.

Obrázek 7: Použití Products tabulky, vrácení ProductID, ProductName, UnitPricea Discontinued sloupců (kliknutím zobrazíte obrázek v plné velikosti)

Pokud chcete automaticky generovat příkazy INSERT, UPDATE a DELETE na základě vybrané tabulky a sloupců, klikněte na tlačítko Upřesnit a zaškrtněte políčko Generovat příkazy INSERT, UPDATE a DELETE.

Zaškrtněte políčko Generovat příkazy INSERT, UPDATE a DELETE.

Obrázek 8: Zaškrtávací políčko Generovat INSERT, UPDATEa DELETE příkazy

Zaškrtávací políčko Generovat INSERT, UPDATEa DELETE příkazy budou zaškrtnuty pouze v případě, že vybraná tabulka obsahuje primární klíč a sloupec primárního klíče (nebo sloupce) jsou zahrnuty do seznamu vrácených sloupců. Zaškrtávací políčko Použít optimistickou souběžnost, které je možné vybrat, jakmile je zaškrtnuto políčko Generovat INSERT, UPDATE a DELETE příkazy, augmentují WHERE klauzule ve výsledných UPDATE a DELETE příkazech, aby poskytovaly kontrolu optimistické souběžnosti. Prozatím nechte toto zaškrtávací políčko nezaškrtnuté; V dalším tutoriálu prozkoumáme optimistickou souběžnost s ovládacím prvkem SqlDataSource.

Po zaškrtnutí políčka Generovat INSERT, UPDATE a DELETE příkazy, klepněte na tlačítko OK, abyste se vrátili na obrazovku Konfigurace příkazu, klepnutím na tlačítko Další, a poté na Dokončit dokončete celého Průvodce konfigurací zdroje dat. Po dokončení průvodce přidá Visual Studio BoundFields do DetailsView pro sloupce ProductID, ProductName, a UnitPrice a CheckBoxField pro sloupec Discontinued. Z inteligentní značky DetailsView zaškrtněte možnost Povolit stránkování, aby uživatel, který navštíví tuto stránku, mohl procházet produkty. Také vymažte vlastnosti Width a Height v DetailsView.

Všimněte si, že inteligentní značka má k dispozici možnosti Povolit vložení, Povolit úpravy a Povolit odstranění. Důvodem je to, že SqlDataSource obsahuje hodnoty pro jeho InsertCommand, UpdateCommanda DeleteCommand, jak ukazuje následující deklarativní syntaxe:

<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>

Všimněte si, že ovládací prvek SqlDataSource měl hodnoty automaticky nastaveny pro jeho InsertCommand, UpdateCommanda DeleteCommand vlastnosti. Sada sloupců odkazovaných ve vlastnostech InsertCommand a UpdateCommand je založená na těch v příkazu SELECT. To znamená, že místo toho, aby byl každý sloupec Products v a , jsou tam pouze ty sloupce, které jsou zadané v (s výjimkou , který je vynechán, protože se jedná o sloupec , jehož hodnotu nelze změnit při úpravě a je automaticky přiřazena při vkládání). Navíc pro každý parametr v InsertCommand, UpdateCommand, a DeleteCommand vlastnosti existují odpovídající parametry v InsertParameters, UpdateParameters a DeleteParameters kolekcích.

Pokud chcete zapnout funkce úprav dat DetailsView, zaškrtněte v inteligentní značce možnosti Povolit vložení, Povolit úpravy a Povolit odstranění. Tím se přidá CommandField s jeho ShowInsertButton, ShowEditButton a ShowDeleteButton vlastnostmi nastavenými na True.

Přejděte na stránku v prohlížeči a poznamenejte si tlačítka Upravit, Odstranit a Nové, která jsou součástí DetailsView. Kliknutím na tlačítko Upravit změníte DetailsView na režim úprav, který zobrazí každý BoundField, jehož ReadOnly vlastnost je nastavena ( False výchozí) jako TextBox, a CheckBoxField jako zaškrtávací políčko.

Výchozí rozhraní pro úpravy ve DetailsView

Obrázek 9: Výchozí rozhraní pro úpravy DetailsView (kliknutím zobrazíte obrázek s plnou velikostí)

Podobně můžete odstranit aktuálně vybraný produkt nebo přidat nový produkt do systému. Vzhledem k tomu, že příkaz InsertCommand funguje pouze se sloupci ProductName, UnitPrice a Discontinued, ostatní sloupce mají buď hodnotu NULL, nebo jejich výchozí hodnotu přiřazenou databází při vložení. Stejně jako u ObjectDataSource, pokud InsertCommand chybí sloupce tabulky databáze, které neumožňují NULL s a nemají výchozí hodnotu, při pokusu INSERT o provedení příkazu dojde k chybě SQL.

Poznámka:

Rozhraní DetailsView pro vkládání a úpravy nemají žádný druh přizpůsobení nebo ověřování. Chcete-li přidat ověřovací ovládací prvky nebo přizpůsobit rozhraní, musíte převést BoundFields na TemplateFields. Další informace najdete v kurzech Přidání ověřovacích ovládacích prvků do rozhraní pro úpravy a vkládání a přizpůsobení rozhraní pro úpravy dat .

Mějte také na paměti, že pro aktualizaci a odstranění používá DetailsView aktuální hodnotu produktu DataKey, která je k dispozici pouze v případě, že je vlastnost DataKeyNames nakonfigurována. Pokud se zdá, že úpravy nebo odstranění nemají žádný vliv, ujistěte se, že DataKeyNames je vlastnost nastavená.

Omezení automatického generování příkazů SQL

Vzhledem k tomu, že možnost Generovat INSERT, UPDATEa DELETE příkazy je k dispozici pouze při výběru sloupců z tabulky, pro složitější dotazy budete muset napsat vlastní INSERT, UPDATEa DELETE příkazy, jako jsme to udělali v kroku 1. Příkazy SQL SELECT se běžně používají JOIN k získání dat z jedné nebo více vyhledávacích tabulek pro účely zobrazení (například při načítání pole tabulky CategoriesCategoryName při zobrazení informací o produktu). Zároveň můžeme uživateli umožnit úpravy, aktualizaci nebo vložení dat do základní tabulky (Productsv tomto případě).

I když lze příkazy INSERTa příkazy UPDATEDELETE zadat ručně, zvažte následující tip pro úsporu času. Zpočátku nastavte SqlDataSource tak, aby načítá zpět data pouze z Products tabulky. Pomocí Průvodce nastavováním zdroje dat zadejte sloupce z tabulky nebo pohledu, abyste mohli automaticky vygenerovat INSERT, UPDATE a DELETE příkazy. Po dokončení průvodce zvolte konfiguraci SelectQuery z okna Vlastnosti (nebo se případně vraťte do Průvodce konfigurací zdroje dat, ale použijte možnost Zadat vlastní příkaz SQL nebo uloženou proceduru). Potom aktualizujte SELECT příkaz tak, aby zahrnoval syntaxi JOIN . Tato technika nabízí výhody úspory času automaticky vygenerovaných příkazů SQL a umožňuje přizpůsobitější SELECT příkaz.

Dalším omezením automatického generování příkazů INSERT, UPDATE a DELETE je, že sloupce v příkazech INSERT a UPDATE jsou založeny na sloupcích vrácených příkazem SELECT. Možná ale budeme muset aktualizovat nebo vložit více nebo méně polí. Například v příkladu z kroku 2 chceme mít UnitPrice BoundField jen pro čtení. V takovém případě by se nemělo zobrazit v UpdateCommand. Nebo můžeme chtít nastavit hodnotu pole tabulky, které se nezobrazuje v objektu GridView. Například při přidávání nového záznamu můžeme chtít QuantityPerUnit , aby hodnota byla nastavena na TODO .

Pokud jsou taková přizpůsobení nutná, musíte je provést ručně, a to buď prostřednictvím okna Vlastnosti, zadat vlastní příkaz SQL nebo uloženou proceduru v průvodci, nebo prostřednictvím deklarativní syntaxe.

Poznámka:

Při přidávání parametrů, které nemají odpovídající pole v ovládacím prvku data Web, mějte na paměti, že tyto hodnoty parametrů budou muset být přiřazeny hodnoty nějakým způsobem. Tyto hodnoty můžou být pevně zakódované přímo v InsertCommand nebo UpdateCommand; mohou pocházet z některého předdefinovaného zdroje (řetězec dotazu, stav relace, webové ovládací prvky na stránce atd.), nebo je možné přiřadit programově, jak jsme viděli v předchozím kurzu.

Shrnutí

Aby webové ovládací prvky dat mohly využívat integrované funkce vkládání, úprav a odstraňování, musí ovládací prvek zdroje dat, na který jsou vázány, nabízet tyto funkce. Pro SqlDataSource to znamená, že INSERT, UPDATE a DELETE příkazy SQL musí být přiřazeny InsertCommand, UpdateCommand a DeleteCommand vlastnosti. Tyto vlastnosti a odpovídající kolekce parametrů je možné přidat ručně nebo generovat automaticky prostřednictvím průvodce konfigurací zdroje dat. V tomto kurzu jsme prozkoumali obě techniky.

Prozkoumali jsme použití optimistické souběžnosti s ObjectDataSource v kurzu Implementace optimistické souběžnosti . Ovládací prvek SqlDataSource také poskytuje podporu optimistické souběžnosti. Jak je uvedeno v kroku 2, při automatickém generování výrazů INSERT, UPDATE, a DELETE průvodce nabízí možnost Použít optimistickou konkurenci. Jak uvidíme v dalším kurzu, použití optimistické souběžnosti s SqlDataSource upraví WHERE klauzule v UPDATE příkazech a DELETE zajistí, aby se hodnoty pro ostatní sloupce nezměnily od posledního zobrazení dat na stránce.

Šťastné programování!

O autorovi

Scott Mitchell, autor sedmi knih ASP/ASP.NET a zakladatel 4GuysFromRolla.com, pracuje s webovými technologiemi Microsoftu od roku 1998. Scott pracuje jako nezávislý konzultant, trenér a spisovatel. Jeho nejnovější kniha je Sams naučte se sami ASP.NET 2.0 v 24 hodinách. Může být dosažitelný na mitchell@4GuysFromRolla.comadrese .