Vkládání, aktualizace a odstraňování dat ovládacím prvkem SqlDataSource (C#)
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 INSERT
příkazy SQL , UPDATE
a 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:
ConnectionString
, který určuje, do které databáze se má dotaz odeslat, aSelectCommand
, 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 INSERT
příkazy , UPDATE
a DELETE
SQL téměř stejným způsobem. Jednoduše přiřaďte InsertCommand
vlastnosti INSERT
, UpdateCommand
a příkazů SQL , UPDATE
a DELETE
DeleteCommand
, které se mají spustit. Pokud příkazy mají parametry (jako obvykle), zahrňte je do InsertParameters
kolekcí , UpdateParameters
a DeleteParameters
.
InsertCommand
Po zadání hodnoty , UpdateCommand
nebo 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.aspx
nástroje otestujte stránku v prohlížeči. Měly by se zobrazit hodnoty ProductID
sloupců , ProductName
a UnitPrice
pro všechny záznamy v tabulce Products
databáze.
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í veDeleteCommand
vlastnostech aDeleteParameters
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.aspx
ná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.
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.
@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ů.
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 @ProductID
hodnotu . 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.
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 INSERT
UPDATE
je 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 INSERT
příkazy , UPDATE
a 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
.
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 ProductID
polí zaškrtněte sloupce , ProductName
, UnitPrice
a Discontinued
.
Obrázek 7: Použití Products
tabulky, vrácení ProductID
sloupců , ProductName
, UnitPrice
a Discontinued
(kliknutím zobrazíte obrázek v plné velikosti)
Pokud chcete automaticky generovat INSERT
příkazy , UPDATE
a DELETE
na základě vybrané tabulky a sloupců, klikněte na tlačítko Upřesnit a zaškrtněte políčko Generovat INSERT
příkazy , UPDATE
a DELETE
.
Obrázek 8: Zaškrtnutí políčka Generovat INSERT
příkazy , UPDATE
a DELETE
Zaškrtávací políčko Generovat INSERT
pří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 INSERT
příkazy , UPDATE
a 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 INSERT
příkazy , UPDATE
a 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 ProductID
sloupce , ProductName
a 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 , InsertCommand
UpdateCommand
a 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é InsertCommand
vlastnosti , UpdateCommand
a 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 UpdateCommand
byly 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 InsertCommand
vlastnostech , UpdateCommand
a DeleteCommand
existují odpovídající parametry v InsertParameters
kolekcích , UpdateParameters
a 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
, ShowEditButton
a 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.
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 ProductName
sloupci , UnitPrice
a 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 INSERT
příkazy , UPDATE
a DELETE
je k dispozici pouze při výběru sloupců z tabulky, u složitějších dotazů budete muset napsat vlastní INSERT
příkazy , UPDATE
a 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 (Products
v tomto případě).
I když je INSERT
možné příkazy , UPDATE
a 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 INSERT
příkazy , UPDATE
a 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í INSERT
příkazů , UPDATE
a 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 UpdateCommand
v . 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 INSERT
příkazy , UPDATE
a DELETE
SQL musí být přiřazeny k vlastnostem InsertCommand
, UpdateCommand
a 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í INSERT
příkazů , UPDATE
a 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.