Sdílet prostřednictvím


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

Scott Mitchell

Stáhnout PDF

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

Úvod

Jak je popsáno v přehledu vložení, aktualizace a odstranění, GridView ovládací prvek poskytuje integrované možnosti aktualizace a odstraňování, zatímco DetailsView a FormView ovládací prvky zahrnují vkládání podpory spolu s úpravou a odstraňování funkcí. Tyto možnosti úprav dat je možné připojit přímo do ovládacího prvku zdroje dat, aniž by bylo nutné zapsat řádek kódu. Přehled vkládání, aktualizace a odstraňování zkoumáno pomocí ObjectDataSource pro usnadnění vkládání, aktualizace a odstraňování pomocí ovládacích prvků GridView, DetailsView a FormView. Alternativně, SqlDataSource lze použít místo ObjectDataSource.

Vzpomeňte si, že kvůli podpoře vkládání, aktualizace a odstraňování pomocí objektu ObjectDataSource jsme potřebovali určit metody vrstvy objektu, které se mají vyvolat, aby se provedly akce vložení, aktualizace nebo odstranění. U sqldatasource musíme poskytnout INSERTpříkazy SQL , UPDATEa DELETE (neboli uložené procedury), které se mají spustit. Jak uvidíme v tomto kurzu, tyto příkazy se dají vytvořit ručně nebo se dají vygenerovat automaticky pomocí průvodce SqlDataSource s Konfigurací zdroje dat.

Poznámka

Vzhledem k tomu, že jsme již 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 tyto funkce implementovat v rámci objektů GridView, DetailsView a FormView, vraťte se ke kurzům Úpravy, vkládání a odstraňování dat a začněte přehledem vkládání, aktualizace a odstraně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 které 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á spustit, aby se vrátily výsledky.

Pro SelectCommand hodnoty s parametry se hodnoty parametrů zadávají prostřednictvím kolekce SqlDataSource SelectParameters a můžou obsahovat pevně zakódované hodnoty, společné hodnoty zdroje parametrů (pole řetězce dotazu, proměnné relace, hodnoty webového ovládacího prvku atd.) nebo je možné je 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 připojení k databázi, hodnoty parametrů jsou přiřazeny k dotazu a příkaz se přemístit do databáze. Výsledky jsou pak vráceny jako DataSet nebo DataReader, v závislosti na hodnotě vlastnosti ovládacího prvku s DataSourceMode .

Spolu s výběrem dat lze ovládací prvek SqlDataSource použít k vložení, aktualizaci a odstranění dat tak, že zadáte INSERTpříkazy , UPDATEa DELETE SQL téměř stejným způsobem. Jednoduše přiřaďte InsertCommandvlastnosti INSERT, UpdateCommanda příkazů SQL , UPDATEa DELETEDeleteCommand , které se mají spustit. Pokud příkazy mají parametry (jako obvykle), zahrňte je do InsertParameterskolekcí , UpdateParametersa DeleteParameters .

InsertCommandPo zadání hodnoty , UpdateCommandnebo DeleteCommand bude dostupná možnost Povolit vkládání, Povolit úpravy nebo Povolit odstranění v inteligentní značce webového ovládacího prvku odpovídajících dat. Pro ilustraci si vezměme příklad ze Querying.aspx stránky, kterou jsme vytvořili v kurzu Dotazování dat pomocí ovládacího prvku SqlDataSource , a rozšíříme ho o možnosti odstranění.

Začněte otevřením InsertUpdateDelete.aspx stránek a Querying.aspx ze SqlDataSource složky. V Designer na Querying.aspx stránce vyberte SqlDataSource a GridView z prvního příkladu ProductsDataSource (ovládací prvky aGridView1). Po výběru těchto dvou ovládacích prvků přejděte do nabídky Úpravy a zvolte Kopírovat (nebo stačí stisknout Ctrl+C). Pak přejděte na Designer a InsertUpdateDelete.aspx vložte ovládací prvky. Po přesunutí těchto dvou ovládacích prvků do InsertUpdateDelete.aspxnástroje otestujte stránku v prohlížeči. Měly by se zobrazit hodnoty ProductIDsloupců , ProductNamea UnitPrice pro všechny záznamy v tabulce Products databáze.

Všechny produkty jsou uvedené, seřazené podle IDproduktu

Obrázek 1: Všechny produkty jsou uvedené, objednané podle ProductID (kliknutím zobrazíte obrázek v plné velikosti)

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

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

Vlastnosti DeleteCommand a DeleteParameters je možné zadat několika způsoby:

  • Prostřednictvím deklarativní syntaxe
  • Z okno Vlastnosti v Designer
  • Na obrazovce Zadání vlastního příkazu SQL nebo uložené procedury v průvodci Konfigurovat zdroj dat
  • Pomocí tlačítka Upřesnit na obrazovce Zadat sloupce ze zobrazení v průvodci Konfigurovat zdroj dat, které ve skutečnosti automaticky vygeneruje DELETE příkaz SQL a kolekci parametrů, které se používají ve DeleteCommand vlastnostech a DeleteParameters

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

V Designer v InsertUpdateDelete.aspxnástroji klikněte na ProductsDataSource SqlDataSource a pak vyvolejte okno Vlastnosti (v nabídce View (Zobrazení) zvolte okno Vlastnosti nebo jednoduše stiskněte klávesu F4). Vyberte vlastnost DeleteQuery, která zobrazí sadu tří teček.

Snímek obrazovky zobrazující okno Vlastnosti ProductsDataSource s vybranou vlastností DeleteQuery

Obrázek 2: Výběr vlastnosti DeleteQuery v okně Vlastnosti

Poznámka

SqlDataSource nemá vlastnost DeleteQuery. DeleteQuery je spíše kombinace DeleteCommand vlastností a DeleteParameters a je uvedena pouze v okno Vlastnosti při prohlížení okna přes Designer. Pokud se díváte na okno Vlastnosti v zobrazení Zdroj, najdete DeleteCommand místo toho vlastnost .

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

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 command and parameter Editor s parametrem <span class=@ProductID přidaným do seznamu parametrů příkazu DELETE />

Obrázek 3: Výběr vlastnosti DeleteQuery v okně Vlastnosti (kliknutím zobrazíte obrázek v plné velikosti)

Nezadávejte hodnotu tohoto parametru (zdroj parametru ponechte na hodnotě None). Jakmile přidáme podporu odstraňování gridView, GridView automaticky zadá tuto hodnotu parametru pomocí hodnoty jeho DataKeys kolekce pro řádek, jehož odstranit tlačítko bylo kliknutí.

Poznámka

Název parametru DELETE použitý v dotazu musí být stejný jako název DataKeyNames hodnoty v GridView, DetailsView nebo FormView. To znamená, že parametr v DELETE příkazu je záměrně 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 parametru automaticky přiřadit hodnotu z DataKeys kolekce.

Po zadání informací souvisejících s odstraněním do dialogového okna Command and Parameter Editor klikněte na OK a přejděte do zobrazení Zdroj a prohlédněte si 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 , oddílu <DeleteParameters> a objektu Parameter s názvem productID.

Konfigurace objektu GridView pro odstranění

DeleteCommand Po přidání vlastnosti teď inteligentní značka GridView obsahuje možnost Povolit odstranění. Pokračujte a zaškrtněte toto políčko. Jak je popsáno v přehledu vložení, aktualizace a odstranění, to způsobí, že GridView přidá CommandField s jeho ShowDeleteButton vlastností nastavenou na true. Jak vidíte na obrázku 4, při návštěvě stránky prostřednictvím prohlížeče se zahrne tlačítko Odstranit. Otestujte tuto stránku 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 Odstranit dojde k postback, GridView přiřadí ProductID parametr hodnotu DataKeys kolekce hodnoty pro řádek, jehož Delete tlačítko bylo kliknutí, a vyvolá SqlDataSource s Delete() metoda. Ovládací prvek SqlDataSource se pak připojí k databázi a spustí DELETE příkaz . Objekt GridView pak znovu napojí na SqlDataSource, získá zpět a zobrazí aktuální sadu produktů (která už neobsahuje právě odstraněný záznam).

Poznámka

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

Obrázek 5 znázorňuje tuto interakci graficky. Projděte si kurz Zkoumání událostí spojených s vkládáním, aktualizací a odstraňováním, kde najdete podrobnější informace o řetězu událostí spojených s vkládáním, aktualizací a odstraňováním z webového ovládacího prvku dat.

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

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

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

V kroku 1 INSERTUPDATEje možné zadat příkazy , a DELETE SQL prostřednictvím okno Vlastnosti nebo deklarativní syntaxe ovládacího prvku. Tento přístup ale vyžaduje ruční zápis příkazů SQL ručně, což může být monotónní a náchylné k chybám. Průvodce Konfigurovat zdroj dat naštěstí nabízí možnost, aby se INSERTpříkazy , UPDATEa DELETE automaticky vygenerovaly při použití obrazovky Zadat sloupce ze zobrazení tabulky.

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

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

Obrázek 6: Vytvoření nového zdroje dat Sql s názvem ManageProductsDataSource (kliknutím zobrazíte obrázek v plné velikosti)

V průvodci Konfigurovat zdroj dat zvolte připojovací řetězec NORTHWINDConnectionString a klikněte na Další. Na obrazovce Configure the Select Statement (Konfigurovat příkaz select) nechte vybraný přepínač Specify columns from a table or view (Zadat sloupce z tabulky nebo zobrazení) a vyberte Products tabulku z rozevíracího seznamu. V seznamu zaškrtávacích ProductIDpolí zaškrtněte sloupce , ProductName, UnitPricea Discontinued .

Pomocí tabulky Products (Produkty) vrátí sloupce ProductID (ID Produktu), ProductName (NázevProduktu), UnitPrice (Cena za kus) a Discontinued (Ukončeno).

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

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

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

Obrázek 8: Zaškrtnutí políčka Generovat INSERTpříkazy , UPDATEa DELETE

Zaškrtávací políčko Generovat INSERTpříkazy , a DELETE bude možné kontrolovat pouze v případě, UPDATEže vybraná tabulka obsahuje primární klíč a sloupec primárního klíče (nebo sloupce) jsou zahrnuté v seznamu vrácených sloupců. Zaškrtávací políčko Použít optimistickou souběžnost, které bude možné vybrat, jakmile je zaškrtnuté políčko Generovat INSERTpříkazy , UPDATEa DELETE , rozšíří WHERE klauzule ve výsledných UPDATE příkazech a DELETE zajistí tak řízení optimistické souběžnosti. Prozatím nechte toto políčko nezaškrtnuté; optimistickou souběžnost pomocí ovládacího prvku SqlDataSource prozkoumáme v dalším kurzu.

Po zaškrtnutí políčka Generovat INSERTpříkazy , UPDATEa DELETE se kliknutím na TLAČÍTKO OK vraťte na obrazovku Konfigurovat příkaz Select, klikněte na Tlačítko Další a Dokončit a dokončete průvodce konfigurací zdroje dat. Po dokončení průvodce přidá Visual Studio BoundFields do DetailsView pro ProductIDsloupce , ProductNamea UnitPrice a a CheckBoxField pro sloupec Discontinued . V inteligentní značce DetailsView zaškrtněte možnost Povolit stránkování, aby uživatel, který navštíví tuto stránku, mohl procházet produkty. Vymažte také Vlastnosti a Height DetailsViewWidth.

Všimněte si, že inteligentní značka má k dispozici možnosti Povolit vkládání, Povolit úpravy a Povolit odstranění. SqlDataSource totiž obsahuje hodnoty pro , InsertCommandUpdateCommanda 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á automaticky nastavené hodnoty pro své InsertCommandvlastnosti , UpdateCommanda DeleteCommand . Sada sloupců odkazovaných ve InsertCommand vlastnostech a UpdateCommand je založená na sloupcích v SELECT příkazu . To znamená, že místo toho , aby v InsertCommand a UpdateCommandbyly všechny sloupce Products, jsou v SelectCommand parametru zadány pouze sloupce (less ProductID), které se vynechají, protože se jedná o IDENTITY sloupec, jehož hodnotu nelze při úpravách změnit a který se automaticky přiřadí při vkládání). Kromě toho pro každý parametr ve InsertCommandvlastnostech , UpdateCommanda DeleteCommand existují odpovídající parametry v InsertParameterskolekcích , UpdateParametersa DeleteParameters .

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 vlastnostmi ShowInsertButton, ShowEditButtona ShowDeleteButton nastavenými na true.

Přejděte na stránku v prohlížeči a všimněte si tlačítek Upravit, Odstranit a Nový, která jsou součástí zobrazení DetailsView. Kliknutím na tlačítko Upravit změníTe DetailsView do režimu úprav, který zobrazí každou BoundField, jejíž ReadOnly vlastnost je nastavena na false (výchozí) jako TextBox a CheckBoxField jako zaškrtávací políčko.

Výchozí rozhraní pro úpravy DetailsView

Obrázek 9: Výchozí rozhraní pro úpravy DetailsView (kliknutím zobrazíte obrázek v plné velikosti)

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

Poznámka

Rozhraní pro vkládání a úpravy DetailsView chybí jakýkoli druh přizpůsobení nebo ověření. 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 úprav a vkládání rozhraní a Přizpůsobení rozhraní pro úpravy dat .

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

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

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

I když je INSERTmožné příkazy , UPDATEa DELETE zadat ručně, zvažte následující tip pro úsporu času. Zpočátku nastavte SqlDataSource tak, aby načítá data pouze z Products tabulky. Pomocí obrazovky Průvodce konfigurací zdroje dat Zadejte sloupce z tabulky nebo zobrazení můžete automaticky vygenerovat INSERTpříkazy , UPDATEa DELETE . Po dokončení průvodce pak zvolte konfiguraci SelectQuery z okno Vlastnosti (nebo se můžete vrátit k průvodci Konfigurovat zdroj 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ými příkazy SQL a umožňuje více přizpůsobené SELECT příkazy.

Dalším omezením automatického generování INSERTpříkazů , UPDATEa DELETE je to, že sloupce v INSERT příkazech a UPDATE jsou založené 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 možná chceme, aby UnitPrice rozhraní BoundField bylo jen pro čtení. V takovém případě by se neměl zobrazovat UpdateCommandv . Nebo můžeme chtít nastavit hodnotu pole tabulky, které se nezobrazuje v GridView. Například při přidávání nového záznamu můžeme chtít, aby byla hodnota nastavená QuantityPerUnit na TODO .

Pokud jsou taková přizpůsobení vyžadována, musíte je provést ručně, a to buď prostřednictvím okno Vlastnosti, možnosti 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 datovém webovém ovládacím prvku, mějte na paměti, že těmto hodnotám parametrů bude nutné nějakým způsobem přiřadit hodnoty. Tyto hodnoty můžou být: pevně zakódované přímo v InsertCommand nebo UpdateCommand; můžou pocházet z nějakého předdefinovaného zdroje (řetězec dotazu, stav relace, webové ovládací prvky na stránce atd.), nebo je možné je přiřadit programově, jak jsme viděli v předchozím kurzu.

Souhrn

Aby webové ovládací prvky dat mohly využívat své integrované funkce vkládání, úprav a odstraňování, musí ovládací prvek zdroje dat, ke kterým jsou vázány, takovou funkci nabízet. Pro SqlDataSource to znamená, že INSERTpříkazy , UPDATEa DELETE SQL musí být přiřazeny k vlastnostem InsertCommand, UpdateCommanda DeleteCommand . Tyto vlastnosti a odpovídající kolekce parametrů lze přidat ručně nebo automaticky vygenerovat prostřednictvím průvodce Konfigurovat zdroj dat. V tomto kurzu jsme prozkoumali obě techniky.

Použití optimistické souběžnosti s objectDataSource jsme prozkoumali 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í INSERTpříkazů , UPDATEa DELETE nabízí průvodce možnost Použít optimistickou souběžnost. Jak uvidíme v dalším kurzu, použití optimistické souběžnosti s SqlDataSource upraví WHERE klauzule v UPDATE příkazech a DELETE tak, aby se zajistilo, že se hodnoty pro ostatní sloupce nezměnily od posledního zobrazení dat na stránce.

Všechno nejlepší na programování!

O autorovi

Scott Mitchell, autor sedmi knih o ASP/ASP.NET a zakladatel 4GuysFromRolla.com, pracuje s webovými technologiemi Microsoftu od roku 1998. Scott pracuje jako nezávislý konzultant, školitel a spisovatel. Jeho nejnovější kniha je Sams Teach Yourself ASP.NET 2.0 in 24 Hours. Můžete ho zastihnout na mitchell@4GuysFromRolla.comadrese . nebo prostřednictvím jeho blogu, který najdete na adrese http://ScottOnWriting.NET.