Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Autor : Scott Mitchell
W poprzednich samouczkach dowiedzieliśmy się, jak kontrolka ObjectDataSource umożliwia wstawianie, aktualizowanie i usuwanie danych. Kontrolka SqlDataSource obsługuje te same operacje, ale podejście jest inne, a w tym samouczku pokazano, jak skonfigurować usługę SqlDataSource do wstawiania, aktualizowania i usuwania danych.
Wprowadzenie
Zgodnie z opisem w temacie Omówienie wstawiania, aktualizowania i usuwania kontrolka GridView udostępnia wbudowane funkcje aktualizowania i usuwania, a kontrolki DetailsView i FormView obejmują obsługę wstawiania oraz edytowania i usuwania funkcji. Te możliwości modyfikacji danych można podłączyć bezpośrednio do kontrolki źródła danych bez konieczności pisania wiersza kodu. Omówienie wstawiania, aktualizowania i usuwania analizowanych przy użyciu obiektu ObjectDataSource w celu ułatwienia wstawiania, aktualizowania i usuwania za pomocą kontrolek GridView, DetailsView i FormView. Alternatywnie można użyć elementu SqlDataSource zamiast obiektu ObjectDataSource.
Pamiętaj, że aby obsługiwać wstawianie, aktualizowanie i usuwanie za pomocą obiektu ObjectDataSource, musieliśmy określić metody warstwy obiektów do wywołania w celu wykonania akcji wstawiania, aktualizowania lub usuwania. W usłudze SqlDataSource musimy podać instrukcje SQL INSERT, UPDATE i DELETE (lub procedury składowane) do wykonania. Jak zobaczymy w tym samouczku, te instrukcje można utworzyć ręcznie lub automatycznie wygenerować za pomocą Kreatora Konfigurowania Źródła Danych SqlDataSource.
Uwaga / Notatka
Ponieważ już omówiliśmy możliwości wstawiania, edytowania i usuwania kontrolek GridView, DetailsView i FormView, ten samouczek koncentruje się na konfigurowaniu kontrolki SqlDataSource w celu obsługi tych operacji. Jeśli musisz odświeżyć swoją wiedzę na temat implementacji tych funkcji w GridView, DetailsView i FormView, wróć do samouczków dotyczących edytowania, wstawiania i usuwania danych, zaczynając od samouczka Omówienie wstawiania, aktualizowania i usuwania.
Krok 1. Określanie instrukcji INSERT, UPDATE i DELETE
Jak widzieliśmy w poprzednich dwóch samouczkach, aby pobrać dane z kontrolki SqlDataSource, musimy ustawić dwie właściwości:
-
ConnectionString, który określa, do której bazy danych ma być wysyłane zapytanie, i -
SelectCommand, który określa ad hoc instrukcję SQL lub nazwę procedury składowanej do wykonania w celu zwrócenia wyników.
W przypadku SelectCommand wartości z parametrami wartości parametrów są określane za pośrednictwem kolekcji sqlDataSource SelectParameters i mogą zawierać trwale zakodowane wartości, typowe wartości źródłowe parametrów (pola kwerendy, zmienne sesji, wartości kontrolki sieci Web itd.) lub mogą być przypisywane programowo. Gdy metoda kontrolki Select() SqlDataSource jest wywoływana programowo lub automatycznie z kontrolki danych sieci Web, jest ustanawiane połączenie z bazą danych, wartości parametrów są przypisywane do zapytania, a polecenie jest przenoszone do bazy danych. Wyniki są następnie zwracane jako element DataSet lub DataReader, w zależności od wartości właściwości kontrolki DataSourceMode .
Oprócz wybierania danych kontrolka SqlDataSource może służyć do wstawiania, aktualizowania i usuwania danych poprzez podanie instrukcji SQL INSERT, UPDATE i DELETE w taki sam sposób. Po prostu przypisz właściwościom InsertCommand, UpdateCommand i DeleteCommand instrukcje SQL INSERT, UPDATE i DELETE do wykonania. Jeśli instrukcje mają parametry (co najczęściej się zdarza), uwzględnij je w kolekcjach InsertParameters, UpdateParameters i DeleteParameters.
Po określeniu wartości InsertCommand, UpdateCommand lub DeleteCommand opcja Włącz wstawianie, Włącz edycję lub Włącz usuwanie stanie się dostępna w inteligentnym tagu odpowiedniej kontrolki sieci Web danych. Aby to zilustrować, przyjrzyjmy się przykładowi ze strony utworzonej w samouczku Querying.aspxWykonywanie zapytań dotyczących danych za pomocą kontrolki SqlDataSource i rozszerzmy go, aby uwzględnić możliwości usuwania.
Zacznij od otwarcia stron InsertUpdateDelete.aspx i Querying.aspx z folderu SqlDataSource. Na stronie Projektanta Querying.aspx wybierz pozycję SqlDataSource i GridView w pierwszym przykładzie (kontrolki ProductsDataSource i GridView1 ). Po wybraniu dwóch kontrolek przejdź do menu Edycja i wybierz polecenie Kopiuj (lub naciśnij Ctrl+C). Następnie przejdź do projektanta InsertUpdateDelete.aspx i wklej elementy sterujące. Po przeniesieniu dwóch kontrolek do InsertUpdateDelete.aspx, sprawdź stronę w przeglądarce. Powinny zostać wyświetlone wartości ProductIDkolumn , ProductNamei UnitPrice dla wszystkich rekordów w Products tabeli bazy danych.
Rysunek 1. Wszystkie produkty są wymienione na liście Uporządkowane według ProductID (kliknij, aby wyświetlić obraz o pełnym rozmiarze)
Dodawanie właściwości DeleteCommand oraz DeleteParameters elementu SqlDataSource
W tym momencie mamy element SqlDataSource, który po prostu zwraca wszystkie rekordy z Products tabeli i kontrolkę GridView, która renderuje te dane. Naszym celem jest rozszerzenie tego przykładu, aby umożliwić użytkownikowi usuwanie produktów za pośrednictwem kontrolki GridView. Aby to osiągnąć, musimy określić wartości dla kontrolki SqlDataSource oraz jej właściwości DeleteCommand i DeleteParameters, a następnie skonfigurować kontrolkę GridView do obsługi funkcji usuwania.
Właściwości DeleteCommand i DeleteParameters można określić na wiele sposobów:
- Za pomocą składni deklaratywnej
- W oknie Właściwości w Projektancie
- Z ekranu Określanie niestandardowej instrukcji SQL lub procedury składowanej w Kreatorze konfigurowania źródła danych
- Za pomocą przycisku Zaawansowane na ekranie Specyfikacja kolumn z widoku tabeli w kreatorze Konfiguracji źródła danych, który automatycznie wygeneruje instrukcję SQL
DELETEoraz kolekcję parametrów używanych w właściwościachDeleteCommandiDeleteParameters
Przyjrzymy się, jak automatycznie utworzyć instrukcję DELETE w Kroku 2. Na razie użyjemy okna Właściwości w Projektancie, chociaż Kreator Konfiguracji Źródła Danych lub opcja składni deklaratywnej również będą działać równie dobrze.
W projektancie w InsertUpdateDelete.aspxprogramie kliknij pozycję ProductsDataSource SqlDataSource, a następnie wyświetl okno Właściwości (w menu Widok wybierz pozycję Właściwości lub naciśnij F4). Wybierz właściwość DeleteQuery, która spowoduje wyświetlenie przycisków z wielokropkiem.
Rysunek 2. Wybieranie właściwości DeleteQuery w oknie Właściwości
Uwaga / Notatka
Element SqlDataSource nie ma właściwości DeleteQuery. Zamiast tego DeleteQuery jest kombinacją właściwości DeleteCommand oraz DeleteParameters i jest wyświetlane tylko w oknie Właściwości podczas wyświetlania okna za pośrednictwem Projektanta. Jeśli patrzysz na okno Właściwości w widoku Źródło, znajdziesz zamiast tego właściwość DeleteCommand.
Kliknij wielokropek we właściwości DeleteQuery, aby wyświetlić okno dialogowe Command and Parameter Editor (Zobacz Rysunek 3). W tym oknie dialogowym można określić instrukcję DELETE SQL i określić parametry. Wprowadź następujące zapytanie w DELETE polu tekstowym polecenia (ręcznie lub przy użyciu konstruktora zapytań, jeśli wolisz):
DELETE FROM Products
WHERE ProductID = @ProductID
Następnie kliknij przycisk Odśwież parametry, aby dodać @ProductID parametr do poniższej listy parametrów.
@ProductID dodanym do listy parametrów polecenia DELETE". />
Rysunek 3. Wybieranie właściwości DeleteQuery w oknie Właściwości (kliknij, aby wyświetlić obraz o pełnym rozmiarze)
Nie podaj wartości dla tego parametru (pozostaw źródło parametru na none ). Po dodaniu obsługi usuwania do GridView, kontrolka automatycznie poda wartość tego parametru, używając wartości z kolekcji DataKeys dla wiersza, którego przycisk Usuń został kliknięty.
Uwaga / Notatka
Nazwa parametru DELETE używana w zapytaniu musi być taka sama jak nazwa DataKeyNames wartości w elementach GridView, DetailsView lub FormView. Oznacza to, że parametr w instrukcji DELETE jest celowo nazwany @ProductID (zamiast, powiedzmy, @ID), ponieważ nazwa kolumny klucza podstawowego w tabeli Products (a tym samym wartość DataKeyNames w GridView) to ProductID.
Jeśli nazwa parametru i wartość DataKeyNames się nie zgadza, kontrolka GridView nie może automatycznie przypisać parametrowi wartości z kolekcji DataKeys.
Po wprowadzeniu informacji związanych z usuwaniem w oknie dialogowym Edytor poleceń i parametrów kliknij przycisk OK i przejdź do widoku źródła, aby sprawdzić wynikowy kod deklaratywny.
<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>
Zwróć uwagę na dodanie DeleteCommand właściwości, a także sekcję <DeleteParameters> i obiekt Parametr o nazwie productID.
Konfigurowanie kontrolki GridView na potrzeby usuwania
Po dodaniu właściwości DeleteCommand inteligentny tag GridView zawiera teraz opcję Zezwól na usuwanie. Przejdź dalej i zaznacz to pole wyboru. Jak opisano w temacie Omówienie wstawiania, aktualizowania i usuwania, powoduje to, że kontrolka GridView dodaje pole CommandField z jej ShowDeleteButton właściwością ustawioną na True. Jak pokazano na rysunku 4, gdy strona jest odwiedzana za pośrednictwem przeglądarki, zostanie uwzględniony przycisk Usuń. Przetestuj tę stronę, usuwając niektóre produkty.
Rysunek 4. Każdy wiersz GridView zawiera teraz przycisk usuwania (kliknij, aby wyświetlić obraz o pełnym rozmiarze)
Po kliknięciu przycisku Usuń następuje postback, kontrolka GridView przypisuje parametrowi wartość z kolekcji ProductID dla wiersza, którego przycisk Usuń został kliknięty, i wywołuje metodę DataKeys obiektu SqlDataSource. Następnie kontrolka SqlDataSource nawiązuje połączenie z bazą danych i wykonuje instrukcję DELETE . Kontrolka GridView ponownie łączy się z usługą SqlDataSource, pobierając i wyświetlając bieżący zestaw produktów (który nie zawiera już rekordu, który został właśnie usunięty).
Uwaga / Notatka
Ponieważ obiekt GridView używa swojej DataKeys kolekcji do wypełniania parametrów sqlDataSource, należy ustawić właściwość GridView DataKeyNames na kolumny, które stanowią klucz podstawowy, oraz że właściwość SqlDataSource SelectCommand zwraca te kolumny. Ponadto ważne jest, aby nazwa parametru w źródle danych SqlDataSource DeleteCommand była ustawiona na @ProductID.
DataKeyNames Jeśli właściwość nie jest ustawiona lub parametr nie ma nazwy @ProductsID, kliknięcie przycisku Usuń spowoduje powrót, ale w rzeczywistości nie usunie żadnego rekordu.
Rysunek 5 przedstawia tę interakcję graficznie. Zapoznaj się z samouczkiem Badanie zdarzeń skojarzonych z wstawianiem, aktualizowaniem i usuwaniem, aby zapoznać się z bardziej szczegółowym omówieniem łańcucha zdarzeń skojarzonych z wstawianiem, aktualizowaniem i usuwaniem z kontrolki sieci Web danych.
Rysunek 5: Kliknięcie przycisku Usuń w elemencie GridView wywołuje metodę SqlDataSource's Delete()
Krok 2. Automatyczne generowanie instrukcji INSERT, UPDATEi DELETE
Jak zbadano w Kroku 1, instrukcje SQL INSERT, UPDATE i DELETE można określić za pomocą okna Właściwości lub składni deklaratywnej kontrolki. Jednak takie podejście wymaga ręcznego zapisania instrukcji SQL, które mogą być monotonne i podatne na błędy. Na szczęście kreator Configure Data Source (Konfigurowanie źródła danych) oferuje opcję automatycznego generowania instrukcji INSERT, UPDATE i DELETE podczas korzystania z ekranu Określanie kolumn z tabeli lub widoku.
Przyjrzyjmy się tej opcji automatycznego generowania. Dodaj element DetailsView do projektanta w InsertUpdateDelete.aspx i ustaw jego właściwość ID na ManageProducts. Następnie w tagu inteligentnym DetailsView wybierz opcję utworzenia nowego źródła danych i utworzenia źródła danych SqlDataSource o nazwie ManageProductsDataSource.
Rysunek 6. Tworzenie nowego źródła danych SqlDataSource o nazwie ManageProductsDataSource (kliknij, aby wyświetlić obraz o pełnym rozmiarze)
W kreatorze Konfigurowanie źródła danych wybierz opcję użycia parametrów NORTHWINDConnectionString połączenia, a następnie kliknij przycisk Dalej. Na ekranie Konfiguruj instrukcję Select, pozostaw zaznaczony przycisk Określ kolumny z tabeli lub widoku, a następnie wybierz tabelę Products z rozwijanej listy. Wybierz kolumny ProductID, ProductName, UnitPricei Discontinued z listy pól wyboru.
Rysunek 7: Korzystając z tabeliProducts, zwróć kolumny ProductID, ProductName, UnitPrice i Discontinued (kliknij, aby wyświetlić obraz w pełnym rozmiarze)
Aby automatycznie wygenerować instrukcje INSERT, UPDATE i DELETE na podstawie wybranej tabeli i kolumn, kliknij przycisk Zaawansowane i zaznacz pole wyboru Generuj instrukcje INSERT, UPDATE i DELETE.
Rysunek 8: Zaznacz pole wyboru Generuj instrukcje INSERT, UPDATE, i DELETE
Opcja wyboru "Generuj instrukcje INSERT, UPDATE, i DELETE" będzie możliwa do zaznaczenia tylko wtedy, gdy wybrana tabela ma klucz podstawowy, a kolumna klucza podstawowego (lub kolumny) znajduje się na liście zwracanych kolumn. Pole wyboru Użyj optymistycznej współbieżności, który staje się dostępny po zaznaczeniu pola wyboru Generuj INSERT, UPDATE i DELETE instrukcje, rozszerzy klauzule WHERE w wynikowych instrukcjach UPDATE i DELETE w celu zapewnienia optymistycznej kontroli współbieżności. Na razie pozostaw to pole wyboru niezaznaczone; Przeanalizujemy optymistyczną współbieżność za pomocą kontrolki SqlDataSource w następnym samouczku.
Po zaznaczeniu pola wyboru "Generuj instrukcje INSERT, UPDATE i DELETE", kliknij przycisk OK, aby powrócić do ekranu "Konfigurowanie instrukcji SELECT". Następnie kliknij "Dalej", a potem "Zakończ", aby zakończyć pracę kreatora konfigurowania źródła danych. Po zakończeniu pracy kreatora program Visual Studio doda pola BoundFields do kontrolki DetailsView dla kolumn ProductID, ProductName i UnitPrice oraz pole CheckBoxField dla kolumny Discontinued. W tagu inteligentnym DetailsView zaznacz opcję Włącz stronicowanie, aby użytkownik odwiedzający tę stronę mógł przeglądać produkty. Wyczyść również właściwości Width i Height kontrolki DetailsView.
Zwróć uwagę, że tag inteligentny ma dostępne opcje Włącz wstawianie, Włącz edytowanie i Włącz usuwanie. Wynika to z faktu, że element SqlDataSource zawiera wartości dla parametrów InsertCommand, UpdateCommandi DeleteCommand, jak pokazuje następująca składnia deklaratywna:
<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>
Zwróć uwagę, że kontrolka SqlDataSource ma wartości ustawione automatycznie dla właściwości InsertCommand, UpdateCommandi DeleteCommand . Zestaw kolumn, do których odnoszą się właściwości InsertCommand i UpdateCommand, jest oparty na tych w instrukcji SELECT. Oznacza to, że zamiast mieć każdą kolumnę Products w InsertCommand i UpdateCommand, istnieją tylko te kolumny określone w SelectCommand (z pominięciem ProductID, ponieważ jest to kolumna IDENTITY, której wartość nie może być zmieniona podczas edycji i która jest automatycznie przypisywana podczas wstawiania). Ponadto dla każdego parametru we właściwościach InsertCommand, UpdateCommand i DeleteCommand istnieją odpowiednie parametry w kolekcjach InsertParameters, UpdateParameters i DeleteParameters.
Aby włączyć funkcje modyfikacji danych w kontrolce DetailsView, zaznacz opcje Włącz wstawianie, Włącz edytowanie i Włącz usuwanie w inteligentnej etykiecie. Spowoduje to dodanie pola commandfield z właściwościami ShowInsertButton, ShowEditButtoni ShowDeleteButton ustawionymi na True.
Odwiedź stronę w przeglądarce i zanotuj przyciski Edytuj, Usuń i Nowe zawarte w widoku DetailsView. Kliknięcie przycisku Edytuj powoduje przejście kontrolki DetailsView w tryb edycji, w którym każda właściwość BoundField, której właściwość ReadOnly jest ustawiona na False (wartość domyślna), jest wyświetlana jako pole tekstowe, a CheckBoxField jako pole wyboru.
Rysunek 9. Domyślny interfejs edycji kontrolki DetailsView (kliknij, aby wyświetlić obraz pełnowymiarowy)
Podobnie można usunąć aktualnie wybrany produkt lub dodać nowy produkt do systemu.
InsertCommand Ponieważ instrukcja działa tylko z kolumnami ProductName, UnitPricei Discontinued , pozostałe kolumny mają NULL albo ich wartość domyślną przypisaną przez bazę danych podczas wstawiania. Podobnie jak w przypadku obiektu ObjectDataSource, jeśli InsertCommand brakuje kolumn tabeli bazy danych, które nie zezwalają na NULL s i nie mają wartości domyślnej, podczas próby wykonania INSERT instrukcji wystąpi błąd SQL.
Uwaga / Notatka
Interfejsy wstawiania i edytowania kontrolki DetailsView nie mają jakiejkolwiek formy dostosowania ani walidacji. Aby dodać kontrolki weryfikacji lub dostosować interfejsy, należy przekonwertować pola powiązane na pola szablonu. Aby uzyskać więcej informacji, zapoznaj się z samouczkami Dodawanie kontrolek walidacji do interfejsu edytowania i wstawiania oraz Dostosowywanie interfejsu modyfikacji danych .
Należy również pamiętać, że w przypadku aktualizowania i usuwania DetailsView używa bieżącej wartości produktu DataKey, która jest obecna tylko wtedy, gdy właściwość DataKeyNames jest skonfigurowana. Jeśli edytowanie lub usuwanie wydaje się nie mieć wpływu, upewnij się, że właściwość jest ustawiona DataKeyNames .
Ograniczenia automatycznego generowania instrukcji SQL
Ponieważ opcja Generuj instrukcje INSERT, UPDATEi DELETE jest dostępna tylko podczas wybierania kolumn z tabeli, w przypadku bardziej złożonych zapytań trzeba będzie napisać własne INSERTinstrukcje , UPDATEi DELETE , takie jak w kroku 1. Instrukcje SQL SELECT często używają JOIN do pobierania danych z jednej lub więcej tabel odnośników w celu wyświetlania (na przykład pobieranie pola tabeli Categories podczas wyświetlania informacji o produkcie CategoryName). Jednocześnie możemy zezwolić użytkownikowi na edytowanie, aktualizowanie lub wstawianie danych do podstawowej tabeli (Productsw tym przypadku).
Chociaż instrukcje INSERT, UPDATE i DELETE można wprowadzić ręcznie, warto rozważyć następującą wskazówkę oszczędzającą czas. Początkowo skonfiguruj usługę SqlDataSource, aby pobierała dane tylko z Products tabeli. Użyj kreatora konfiguracji źródła danych na ekranie Określanie kolumn z tabeli lub widoku, aby automatycznie wygenerować instrukcje INSERT, UPDATE i DELETE. Następnie po ukończeniu pracy kreatora wybierz opcję SelectQuery w oknie Właściwości (lub, alternatywnie, wróć do Kreatora konfigurowania źródła danych, ale użyj opcji Określ niestandardową instrukcję SQL lub procedurę składowaną). Następnie zaktualizuj instrukcję , SELECT aby uwzględnić składnię JOIN . Ta technika oferuje korzyści związane z oszczędnością czasu dzięki automatycznie generowanym instrukcjom SQL i pozwala na bardziej dostosowaną instrukcję SELECT.
Innym ograniczeniem automatycznego generowania instrukcji INSERT, UPDATE i DELETE jest to, że kolumny w instrukcjach INSERT i UPDATE są oparte na kolumnach zwracanych przez instrukcję SELECT. Może być konieczne zaktualizowanie lub wstawienie większej lub mniejszej liczby pól. Na przykład, w przykładzie z Kroku 2, być może chcemy, aby UnitPrice pole BoundField było tylko do odczytu. W takim przypadku nie powinna być wyświetlana w elemencie UpdateCommand. Możemy chcieć ustawić wartość pola tabeli, które nie pojawia się w GridView. Gdy dodajemy nowy rekord, możemy chcieć ustawić wartość QuantityPerUnit na TODO.
Jeśli takie dostosowania są wymagane, należy je ręcznie ustawić za pomocą okna Właściwości, opcji Określ niestandardową instrukcję SQL lub procedurę składowaną w kreatorze lub za pomocą składni deklaratywnej.
Uwaga / Notatka
Podczas dodawania parametrów, które nie mają odpowiednich pól w kontrolce sieci Web danych, należy pamiętać, że te wartości parametrów będą musiały zostać przypisane w jakiś sposób. Te wartości mogą być następujące: zakodowane bezpośrednio w obiekcie InsertCommand lub UpdateCommand; mogą pochodzić ze wstępnie zdefiniowanego źródła (zapytanie, stan sesji, kontrolki sieci Web na stronie itd.) lub można przypisać programowo, jak pokazano w poprzednim samouczku.
Podsumowanie
Aby kontrolki sieci Web danych mogły korzystać z wbudowanych funkcji wstawiania, edytowania i usuwania danych, kontrolka źródła danych, z którą są powiązane, musi oferować takie funkcje. W przypadku SqlDataSource oznacza to, że instrukcje SQL INSERT, UPDATE i DELETE muszą być przypisane do właściwości InsertCommand, UpdateCommand i DeleteCommand. Te właściwości i odpowiadające im kolekcje parametrów można dodać ręcznie lub wygenerować automatycznie za pomocą Kreatora konfigurowania źródła danych. W tym samouczku przeanalizowaliśmy obie techniki.
Zbadaliśmy użycie optymistycznej współbieżności z obiektem ObjectDataSource w samouczku Implementowanie optymistycznej współbieżności . Element sterujący SqlDataSource zapewnia również obsługę współbieżności optymistycznej. Jak wspomniano w kroku 2, podczas automatycznego generowania INSERT, UPDATE i DELETE, kreator oferuje opcję użycia optymistycznej współbieżności. Jak zobaczymy w następnym samouczku, użycie optymistycznej współbieżności z źródłem SqlDataSource modyfikuje klauzule w instrukcjach WHERE i UPDATE, oraz w DELETE, aby upewnić się, że wartości innych kolumn nie zmieniły się od czasu, gdy dane były ostatnio wyświetlone na stronie.
Szczęśliwe programowanie!
Informacje o autorze
Scott Mitchell, autor siedmiu książek ASP/ASP.NET i założyciel 4GuysFromRolla.com, współpracuje z technologiami internetowymi firmy Microsoft od 1998 roku. Scott pracuje jako niezależny konsultant, trener i pisarz. Jego najnowsza książka to Sams Teach Yourself ASP.NET 2.0 w ciągu 24 godzin. Można go uzyskać pod adresem mitchell@4GuysFromRolla.com.