Udostępnij za pośrednictwem


Wykonywanie zapytań o dane przy użyciu kontrolki SqlDataSource (C#)

Autor: Scott Mitchell

Pobierz plik PDF

W poprzednich samouczkach użyliśmy kontrolki ObjectDataSource, aby całkowicie oddzielić warstwę prezentacji od warstwy dostępu do danych. Począwszy od tego samouczka, dowiesz się, jak można użyć kontrolki SqlDataSource dla prostych aplikacji, które nie wymagają takiego ścisłego rozdzielenia prezentacji i dostępu do danych.

Wprowadzenie

Wszystkie samouczki, które omówiliśmy do tej pory, używały architektury warstwowej składającej się z warstw prezentacji, logiki biznesowej i dostępu do danych. Warstwa dostępu do danych (DAL) została utworzona w pierwszym samouczku (Tworzenie warstwy dostępu do danych) i warstwie logiki biznesowej w drugim (Tworzenie warstwy logiki biznesowej). Począwszy od samouczka Wyświetlanie danych za pomocą obiektu ObjectDataSource, zobaczyliśmy, jak używać nowej kontrolki ObjectDataSource ASP.NET 2.0 do deklaratywnego interfejsu z architekturą z warstwy prezentacji.

Mimo że wszystkie samouczki do tej pory korzystały z architektury do pracy z danymi, można również uzyskiwać dostęp do danych, wstawiać, aktualizować i usuwać dane bazy danych bezpośrednio ze strony ASP.NET, pomijając architekturę. Spowoduje to umieszczenie określonych zapytań bazy danych i logiki biznesowej bezpośrednio na stronie internetowej. W przypadku wystarczająco dużych lub złożonych aplikacji projektowanie, implementowanie i używanie architektury warstwowej jest niezwykle ważne dla powodzenia, skalowalności i możliwości utrzymania aplikacji. Jednak tworzenie niezawodnej architektury może być niepotrzebne podczas tworzenia niezwykle prostych, jednorazowych aplikacji.

ASP.NET 2.0 udostępnia pięć wbudowanych kontrolek źródła danych SqlDataSource, AccessDataSource, ObjectDataSource, XmlDataSource i SiteMapDataSource. Za pomocą usługi SqlDataSource można uzyskiwać dostęp do danych i modyfikować je bezpośrednio z relacyjnej bazy danych, w tym programu Microsoft SQL Server, Microsoft Access, Oracle, MySQL i innych. W tym samouczku i kolejnych trzech omówimy sposób pracy z kontrolką SqlDataSource, eksplorując sposób wykonywania zapytań i filtrowania danych bazy danych, a także sposobu używania usługi SqlDataSource do wstawiania, aktualizowania i usuwania danych.

ASP.NET 2.0 zawiera pięć wbudowanych kontrolek źródła danych

Rysunek 1. ASP.NET 2.0 zawiera pięć wbudowanych kontrolek źródła danych

Porównywanie obiektów ObjectDataSource i SqlDataSource

Koncepcyjnie zarówno kontrolki ObjectDataSource, jak i SqlDataSource są po prostu serwerami proxy do danych. Zgodnie z opisem w samouczku Wyświetlanie danych za pomocą obiektu ObjectDataSource obiekt ObjectDataSource zawiera właściwości wskazujące typ obiektu, który dostarcza dane oraz metody wywoływania w celu wybrania, wstawienia, zaktualizowania i usunięcia danych z bazowego typu obiektu. Po skonfigurowaniu właściwości obiektu ObjectDataSource kontrolka sieci Web danych, taka jak GridView, DetailsView lub DataList, może być powiązana z kontrolką przy użyciu metod ObjectDataSource s Select(), Insert()Delete()i Update() w celu interakcji z podstawową architekturą.

Źródło SqlDataSource udostępnia te same funkcje, ale działa względem relacyjnej bazy danych, a nie biblioteki obiektów. W usłudze SqlDataSource musimy określić bazę danych parametry połączenia oraz zapytania ad hoc SQL lub procedury składowane, które będą wykonywane w celu wstawiania, aktualizowania, usuwania i pobierania danych. Metody sqlDataSource s Select(), Insert()Update(), iDelete(), po wywołaniu, łączą się z określoną bazą danych i wystawiają odpowiednie zapytanie SQL. Jak pokazano na poniższym diagramie, te metody wykonują grunt pracy łączenia się z bazą danych, wystawiania zapytania i zwracania wyników.

Usługa SqlDataSource służy jako serwer proxy do bazy danych

Rysunek 2. Źródło SqlDataSource służy jako serwer proxy bazy danych

Uwaga

W tym samouczku skoncentrujemy się na pobieraniu danych z bazy danych. W samouczku Wstawianie, aktualizowanie i usuwanie danych za pomocą kontrolki SqlDataSource zobaczymy, jak skonfigurować usługę SqlDataSource w celu obsługi wstawiania, aktualizowania i usuwania.

Kontrolki SqlDataSource i AccessDataSource

Oprócz kontrolki SqlDataSource ASP.NET 2.0 zawiera również kontrolkę AccessDataSource. Te dwie różne kontrolki prowadzą wielu deweloperów do ASP.NET 2.0, aby podejrzewać, że kontrolka AccessDataSource została zaprojektowana do pracy wyłącznie z programem Microsoft Access za pomocą kontrolki SqlDataSource przeznaczonej do pracy wyłącznie z programem Microsoft SQL Server. Mimo że źródło AccessDataSource jest przeznaczone do pracy z programem Microsoft Access, kontrolka SqlDataSource współpracuje z dowolną relacyjną bazą danych, do których można uzyskać dostęp za pośrednictwem platformy .NET. Obejmuje to między innymi wszystkie magazyny danych zgodne z rozwiązaniem OleDb lub ODBC, takie jak Microsoft SQL Server, Microsoft Access, Oracle, Informix, MySQL i PostgreSQL.

Jedyną różnicą między kontrolkami AccessDataSource i SqlDataSource jest sposób określenia informacji o połączeniu z bazą danych. Kontrolka AccessDataSource wymaga tylko ścieżki pliku do pliku bazy danych programu Access. Z drugiej strony usługa SqlDataSource wymaga kompletnego parametry połączenia.

Krok 1. Tworzenie stron sieci Web SqlDataSource

Zanim zaczniemy badać sposób pracy bezpośrednio z danymi bazy danych przy użyciu kontrolki SqlDataSource, najpierw pośmińmy chwilę na utworzenie stron ASP.NET w naszym projekcie witryny internetowej, które będą potrzebne w tym samouczku i w następnych trzech. Zacznij od dodania nowego folderu o nazwie SqlDataSource. Następnie dodaj następujące strony ASP.NET do tego folderu, aby skojarzyć każdą stronę ze stroną wzorcową Site.master :

  • Default.aspx
  • Querying.aspx
  • ParameterizedQueries.aspx
  • InsertUpdateDelete.aspx
  • OptimisticConcurrency.aspx

Dodawanie stron ASP.NET dla samouczków związanych z usługą SqlDataSource

Rysunek 3. Dodawanie stron ASP.NET dla samouczków związanych z usługą SqlDataSource

Podobnie jak w innych folderach, Default.aspx w SqlDataSource folderze zostanie wyświetlona lista samouczków w jego sekcji. Pamiętaj, że kontrolka SectionLevelTutorialListing.ascx użytkownika udostępnia tę funkcję. W związku z tym dodaj tę kontrolkę Default.aspx użytkownika, przeciągając ją z Eksplorator rozwiązań na stronę Widok projektu.

Dodaj kontrolkę Użytkownika SectionLevelTutorialListing.ascx, aby Default.aspx

Rysunek 4. Dodawanie kontrolki SectionLevelTutorialListing.ascx użytkownika do Default.aspx (kliknij, aby wyświetlić obraz o pełnym rozmiarze)

Na koniec dodaj te cztery strony jako wpisy do Web.sitemap pliku. W szczególności dodaj następujący znacznik po dodaniu przycisków niestandardowych do listy DataList i repeater <siteMapNode>:

<siteMapNode url="~/SqlDataSource/Default.aspx"
    title="Using the SqlDataSource Control"
    description="Work directly with database data using the SqlDataSource control.">
    <siteMapNode url="~/SqlDataSource/Querying.aspx" title="Retrieving Database Data"
        description="Examines how to query data from a database that can then be
                     displayed  through a data Web control."/>
    <siteMapNode url="~/SqlDataSource/ParameterizedQueries.aspx"
        title="Parameterized Queries"
        description="Learn how to specify parameterized WHERE clauses in the
                     SqlDataSource's SELECT statement." />
    <siteMapNode url="~/SqlDataSource/InsertUpdateDelete.aspx"
        title="Inserting, Updating, and Deleting Database Data"
        description="See how to configure the SqlDataSource to include INSERT, UPDATE,
                      and DELETE statements." />
    <siteMapNode url="~/SqlDataSource/OptimisticConcurrency.aspx"
        title="Using Optimistic Concurrency"
        description="Explore how to augment the SqlDataSource to include support for
                     optimistic concurrency." />
</siteMapNode>

Po zaktualizowaniu Web.sitemapprogramu pośmiń chwilę, aby wyświetlić witrynę internetową samouczków za pośrednictwem przeglądarki. Menu po lewej stronie zawiera teraz elementy do edycji, wstawiania i usuwania samouczków.

Mapa witryny zawiera teraz wpisy samouczków sqlDataSource

Rysunek 5. Mapa witryny zawiera teraz wpisy dla samouczków sqlDataSource

Krok 2. Dodawanie i konfigurowanie kontrolki SqlDataSource

Zacznij od otwarcia Querying.aspx strony w folderze SqlDataSource i przełącz się do widoku Projektu. Przeciągnij kontrolkę SqlDataSource z przybornika do projektanta i ustaw ją ID na ProductsDataSource. Podobnie jak w przypadku obiektu ObjectDataSource, źródło SqlDataSource nie generuje żadnych renderowanych danych wyjściowych i dlatego jest wyświetlane jako szare pole na powierzchni projektowej. Aby skonfigurować źródło danych SqlDataSource, kliknij link Konfiguruj źródło danych z tagu inteligentnego sqlDataSource.

Kliknij link Configure Data Source (Konfigurowanie źródła danych) z tagu inteligentnego sqlDataSource s

Rysunek 6. Kliknij link Konfiguruj źródło danych z tagu inteligentnego sqlDataSource

Spowoduje to wyświetlenie kreatora konfigurowania źródła danych kontrolki SqlDataSource. Chociaż kroki kreatora różnią się od kontrolek ObjectDataSource, cel końcowy jest taki sam, aby podać szczegółowe informacje na temat pobierania, wstawiania, aktualizowania i usuwania danych za pośrednictwem źródła danych. W przypadku usługi SqlDataSource oznacza to określenie bazowej bazy danych do użycia i podanie instrukcji SQL ad hoc lub procedur składowanych.

Pierwszy krok kreatora monituje nas o bazę danych. Lista rozwijana zawiera te bazy danych znajdujące się w folderze aplikacji App_Data internetowej oraz te, które zostały dodane do węzła Połączenia danych w Eksploratorze serwera. Ponieważ dodaliśmy już parametry połączenia dla NORTHWIND.MDF bazy danych w App_Data folderze do pliku projektuWeb.config, lista rozwijana zawiera odwołanie do tej parametry połączenia, NORTHWINDConnectionString. Wybierz ten element z listy rozwijanej, a następnie kliknij przycisk Dalej.

Wybierz pozycję NORTHWINDConnectionString z listy rozwijanej

Rysunek 7. Wybieranie elementu NORTHWINDConnectionString z listy rozwijanej

Po wybraniu bazy danych kreator prosi o zwrócenie danych przez zapytanie. Możemy określić kolumny tabeli lub widoku, które mają być zwracane, albo wprowadzić niestandardową instrukcję SQL lub określić procedurę składowaną. Można przełączać się między tym wyborem za pomocą instrukcji Określ niestandardową instrukcję SQL lub procedurę składowaną i Określ kolumny z tabeli lub przycisków radiowych widoku.

Uwaga

W tym pierwszym przykładzie użyjmy opcji Określ kolumny z tabeli lub widoku. Wrócimy do kreatora w dalszej części tego samouczka i zapoznamy się z opcją Określ niestandardową instrukcję SQL lub procedurę składowaną.

Rysunek 8 przedstawia ekran Konfigurowanie instrukcji Select po wybraniu przycisku radiowego Określanie kolumn z tabeli lub widoku. Lista rozwijana zawiera zestaw tabel i widoków w bazie danych Northwind z wybraną tabelą lub kolumnami widoku wyświetlanymi na poniższej liście pól wyboru. W tym przykładzie zwróćmy kolumny ProductID, ProductNamei UnitPrice z Products tabeli . Jak pokazano na rysunku 8, po wybraniu tych opcji kreator wyświetli wynikowej instrukcji SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]SQL .

Zwracanie danych z tabeli Products

Rysunek 8. Zwracanie danych z Products tabeli

Po skonfigurowaniu kreatora w celu zwrócenia ProductIDkolumn , ProductNamei UnitPrice z Products tabeli kliknij przycisk Dalej. Ten ostatni ekran umożliwia sprawdzenie wyników zapytania skonfigurowanego w poprzednim kroku. Kliknięcie przycisku Test Query powoduje wykonanie skonfigurowanej SELECT instrukcji i wyświetlenie wyników w siatce.

Kliknij przycisk Testuj zapytanie, aby przejrzeć zapytanie SELECT

Rysunek 9. Kliknij przycisk Testuj zapytanie, aby przejrzeć SELECT zapytanie

Aby ukończyć pracę kreatora, kliknij przycisk Zakończ.

Podobnie jak w przypadku obiektu ObjectDataSource, kreator sqlDataSource tylko przypisuje wartości do właściwości kontrolki, a mianowicie ConnectionString właściwości i SelectCommand . Po ukończeniu pracy kreatora znacznik deklaratywne kontrolki SqlDataSource powinien wyglądać podobnie do następującego:

<asp:SqlDataSource ID="ProductsDataSource" runat="server"
    ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>"
    SelectCommand="SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]">
</asp:SqlDataSource>

Właściwość ConnectionString zawiera informacje na temat nawiązywania połączenia z bazą danych. Tę właściwość można przypisać do pełnej, zakodowanej parametry połączenia wartości lub wskazać parametry połączenia w pliku Web.config. Aby odwołać się do wartości parametry połączenia w pliku Web.config, użyj składni <%$ expressionPrefix:expressionValue %>. Zazwyczaj wyrażeniePrefix to ConnectionStrings, a expressionValue to nazwa parametrów połączenia w<connectionStrings> Web.config sekcji . Składnia może jednak służyć do odwołwania <appSettings> się do elementów lub zawartości z plików zasobów. Aby uzyskać więcej informacji na temat tej składni, zobacz ASP.NET Expressions Overview (Omówienie wyrażeń ASP.NET).

Właściwość SelectCommand określa instrukcję ad hoc SQL lub procedurę składowaną do wykonania w celu zwrócenia danych.

Krok 3. Dodawanie kontrolki sieci Web danych i wiązanie jej z usługą SqlDataSource

Po skonfigurowaniu elementu SqlDataSource można go powiązać z kontrolką sieci Web danych, taką jak GridView lub DetailsView. Na potrzeby tego samouczka wyświetlmy dane w elementy GridView. Z przybornika przeciągnij kontrolkę GridView na stronę i powiąż ją ProductsDataSource z usługą SqlDataSource, wybierając źródło danych z listy rozwijanej w tagu inteligentnym GridView.

Dodawanie kontrolki GridView i wiązanie jej z kontrolką SqlDataSource

Rysunek 10. Dodawanie kontrolki GridView i wiązanie jej z kontrolką SqlDataSource (kliknij, aby wyświetlić obraz o pełnym rozmiarze)

Po wybraniu kontrolki SqlDataSource z listy rozwijanej w tagu inteligentnym GridView program Visual Studio automatycznie doda pole BoundField lub CheckBoxField do kontrolki GridView dla każdej kolumny zwróconej przez kontrolkę źródła danych. Ponieważ element SqlDataSource zwraca trzy kolumny ProductIDbazy danych , ProductNamei UnitPrice istnieją trzy pola w elementy GridView.

Poświęć chwilę, aby skonfigurować trzy pola BoundFields obiektu GridView. Zmień właściwość pola HeaderText na ProductName Product Name (Nazwa produktu) i UnitPrice pole na Price (Cena). Sformatuj UnitPrice również pole jako walutę. Po wprowadzeniu tych modyfikacji znacznik deklaratywny gridView powinien wyglądać podobnie do następującego:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
    DataKeyNames="ProductID" DataSourceID="ProductsDataSource"
    EnableViewState="False">
    <Columns>
        <asp:BoundField DataField="ProductID" HeaderText="ProductID"
            InsertVisible="False" ReadOnly="True" SortExpression="ProductID" />
        <asp:BoundField DataField="ProductName" HeaderText="Product Name"
            SortExpression="ProductName" />
        <asp:BoundField DataField="UnitPrice" HeaderText="Price"
            SortExpression="UnitPrice" DataFormatString="{0:c}"
            HtmlEncode="False" />
    </Columns>
</asp:GridView>

Odwiedź tę stronę za pośrednictwem przeglądarki. Jak pokazano na rysunku 11, kontrolka GridView wyświetla listę poszczególnych produktów s ProductID, ProductNamei UnitPrice wartości.

Kontrolka GridView wyświetla wartości ProductID, ProductName i UnitPrice

Rysunek 11. Kontrolka GridView wyświetla każdy produkt , ProductNameProductIDi UnitPrice wartości (kliknij, aby wyświetlić obraz pełnowymiarowy)

Gdy strona zostanie odwiedzona, kontrolka GridView wywołuje metodę kontroli Select() źródła danych. Kiedy używaliśmy kontrolki ObjectDataSource, ta nazwała metodę ProductsBLL klasy s GetProducts() . Jednak w przypadku usługi SqlDataSource Select() metoda ustanawia połączenie z określoną bazą danych i wystawia SelectCommand metodę (SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]w tym przykładzie). Funkcja SqlDataSource zwraca wyniki, które następnie funkcja GridView wylicza, tworząc wiersz w liczbie GridView dla każdego zwróconego rekordu bazy danych.

Wbudowane funkcje kontrolki sieci Web danych i kontrolka SqlDataSource

Ogólnie rzecz biorąc, funkcje związane z stronicowaniem, sortowaniem, edytowaniem, usuwaniem, wstawianiem i tak dalej są specyficzne dla kontrolki sieci Web danych i nie są zależne od używanej kontroli źródła danych. Oznacza to, że element GridView może korzystać z wbudowanego stronicowania, sortowania, edytowania i usuwania, niezależnie od tego, czy jest on powiązany z obiektem ObjectDataSource, czy z usługą SqlDataSource. Jednak niektóre funkcje kontroli sieci Web danych są wrażliwe na używaną kontrolę źródła danych lub konfigurację kontroli źródła danych.

Na przykład w samouczku Efektywne stronicowanie za pomocą dużych ilości danych omówiliśmy, w jaki sposób domyślnie logika stronicowania dla kontrolek sieci Web danych naiwnie zwraca wszystkie rekordy z bazowego źródła danych, a następnie wyświetla tylko odpowiedni podzestaw rekordów, biorąc pod uwagę bieżący indeks strony i liczbę rekordów do wyświetlenia na stronę. Ten model jest bardzo nieefektywny podczas stronicowania za pośrednictwem wystarczająco dużych zestawów wyników. Na szczęście obiekt ObjectDataSource można skonfigurować tak, aby obsługiwał niestandardowe stronicowanie, co zwraca tylko dokładny podzbiór rekordów do wyświetlenia. Kontrolka SqlDataSource nie ma jednak właściwości implementowania niestandardowego stronicowania.

Kolejną subtelnością stronicowania i sortowania jest użycie elementu SqlDataSource. Domyślnie dane zwrócone z usługi SqlDataSource można stronicować lub sortować za pomocą kontrolki GridView. Aby to zademonstrować, sprawdź opcje Włącz stronicowanie i Włącz sortowanie w tagu inteligentnym GridView w programie Querying.aspx i sprawdź, czy działa to zgodnie z oczekiwaniami.

Sortowanie i stronicowanie działa, ponieważ źródło SqlDataSource pobiera dane bazy danych do luźno typizowanego zestawu danych. Łączna liczba rekordów zwracanych przez zapytanie stanowi podstawowy aspekt implementowania stronicowania, który można ustalić z zestawu danych. Ponadto wyniki zestawu danych można sortować za pomocą elementu DataView. Te funkcje są automatycznie używane przez usługę SqlDataSource, gdy obiekt GridView żąda stronicowania lub sortowania danych.

Element SqlDataSource można skonfigurować tak, aby zwracał element DataReader zamiast elementu DataSet, zmieniając jego DataSourceMode właściwość z DataSet (wartość domyślna) na DataReader. Użycie elementu DataReader może być preferowane w sytuacjach podczas przekazywania wyników elementu SqlDataSource do istniejącego kodu, który oczekuje elementu DataReader. Ponadto, ponieważ obiekty DataReaders są znacznie prostsze niż Zestawy danych, oferują lepszą wydajność. Jeśli jednak wprowadzisz tę zmianę, kontrolka sieci Web danych nie może sortować ani stronicować, ponieważ usługa SqlDataSource nie może ustalić, ile rekordów jest zwracanych przez zapytanie, ani usługa DataReader nie oferuje żadnych technik sortowania zwracanych danych.

Krok 4. Używanie niestandardowej instrukcji SQL lub procedury składowanej

Podczas konfigurowania kontrolki SqlDataSource zapytanie używane do zwracania danych można określić w jednym z dwóch podejść jako niestandardową instrukcję SQL lub procedurę składowaną albo jako kolumny z istniejącej tabeli lub widoku. W kroku 2 zbadaliśmy wybieranie kolumn z Products tabeli. Przyjrzyjmy się użyciu niestandardowej instrukcji SQL.

Dodaj kolejną kontrolkę GridView do Querying.aspx strony i wybierz utworzenie nowego źródła danych z listy rozwijanej w tagu inteligentnym. Następnie wskaż, że dane zostaną pobrane z bazy danych, co spowoduje utworzenie nowej kontrolki SqlDataSource. Nadaj kontrolce ProductsWithCategoryInfoDataSourcenazwę .

Tworzenie nowej kontrolki SqlDataSource o nazwie ProductsWithCategoryInfoDataSource

Rysunek 12. Tworzenie nowej kontrolki SqlDataSource o nazwie ProductsWithCategoryInfoDataSource

Na następnym ekranie zostanie wyświetlony monit o określenie bazy danych. Jak zrobiliśmy to z powrotem na rysunku 7, wybierz z NORTHWINDConnectionString listy rozwijanej i kliknij przycisk Dalej. Na ekranie Konfigurowanie instrukcji Select wybierz przycisk radiowy Określ niestandardową instrukcję SQL lub procedurę składowaną, a następnie kliknij przycisk Dalej. Spowoduje to wyświetlenie ekranu Define Custom Statements or Stored Procedures (Definiowanie instrukcji niestandardowych lub procedur składowanych), który oferuje karty z etykietą SELECT, UPDATE, INSERT i DELETE. Na każdej karcie możesz wprowadzić niestandardową instrukcję SQL w polu tekstowym lub wybrać procedurę składowaną z listy rozwijanej. W tym samouczku przyjrzymy się wprowadzeniu niestandardowej instrukcji SQL; Następny samouczek zawiera przykład, który używa procedury składowanej.

Wprowadź niestandardową instrukcję SQL lub wybierz procedurę składowaną

Rysunek 13. Wprowadź niestandardową instrukcję SQL lub wybierz procedurę składowaną

Niestandardową instrukcję SQL można wprowadzić ręcznie w polu tekstowym lub można utworzyć graficznie, klikając przycisk Konstruktor zapytań. W konstruktorze zapytań lub polu tekstowym użyj następującego zapytania, aby zwrócić ProductID pola i ProductName z Products tabeli przy użyciu elementu , JOIN aby pobrać produkt z CategoryName Categories tabeli:

SELECT Products.ProductID, Products.ProductName, Categories.CategoryName
FROM Categories
    INNER JOIN Products ON
        Categories.CategoryID = Products.CategoryID

Zapytanie można konstruować graficznie przy użyciu konstruktora zapytań

Rysunek 14. Zapytanie można konstruować graficznie przy użyciu konstruktora zapytań

Po określeniu zapytania kliknij przycisk Dalej, aby przejść do ekranu Zapytania testowego. Kliknij przycisk Zakończ, aby ukończyć pracę kreatora SqlDataSource.

Po zakończeniu pracy kreatora kontrolka GridView będzie mieć dodane do niego trzy pola BoundFields z wyświetlonymi ProductIDkolumnami , ProductNamei CategoryName zwróconymi z zapytania i w wyniku następującego znacznika deklaratywnego:

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False"
    DataKeyNames="ProductID" DataSourceID="ProductsWithCategoryInfoDataSource"
    EnableViewState="False">
    <Columns>
        <asp:BoundField DataField="ProductID" HeaderText="ProductID"
            InsertVisible="False" ReadOnly="True" SortExpression="ProductID" />
        <asp:BoundField DataField="ProductName" HeaderText="ProductName"
            SortExpression="ProductName" />
        <asp:BoundField DataField="CategoryName" HeaderText="CategoryName"
            SortExpression="CategoryName" />
    </Columns>
</asp:GridView>
<asp:SqlDataSource ID="ProductsWithCategoryInfoDataSource" runat="server"
    ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>"
    SelectCommand="
        SELECT Products.ProductID, Products.ProductName, Categories.CategoryName
        FROM Categories
        INNER JOIN Products ON Categories.CategoryID = Products.CategoryID">
</asp:SqlDataSource>

Kontrolka GridView pokazuje każdy identyfikator, nazwę i skojarzona nazwa kategorii

Rysunek 15. Widok GridView przedstawia każdy identyfikator produktu, nazwę i skojarzona nazwa kategorii (kliknij, aby wyświetlić obraz o pełnym rozmiarze)

Podsumowanie

W tym samouczku pokazano, jak wykonywać zapytania i wyświetlać dane przy użyciu kontrolki SqlDataSource. Podobnie jak obiekt ObjectDataSource, źródło SqlDataSource służy jako serwer proxy, zapewniając deklaratywne podejście do uzyskiwania dostępu do danych. Jego właściwości określają bazę danych do nawiązania połączenia i wykonywania zapytania SQLSELECT. Można je określić za pomocą okno Właściwości lub za pomocą kreatora Konfigurowanie źródła danych.

Przykłady SELECT zapytań przeanalizowane w tym samouczku zwróciły wszystkie rekordy z określonego zapytania. Kontrolka SqlDataSource może jednak zawierać klauzulę WHERE z parametrami, których wartości są przypisywane programowo lub są automatycznie pobierane z określonego źródła. W następnym samouczku sprawdzimy, jak tworzyć i używać sparametryzowanych zapytań.

Szczęśliwe programowanie!

Dalsze informacje

Aby uzyskać więcej informacji na temat tematów omówionych w tym samouczku, zapoznaj się z następującymi zasobami:

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 24 godzinach. Można go uzyskać pod adresem mitchell@4GuysFromRolla.com. lub za pośrednictwem swojego bloga, który można znaleźć na stronie http://ScottOnWriting.NET.

Specjalne podziękowania

Ta seria samouczków została omówiona przez wielu przydatnych recenzentów. Recenzenci w tym samouczku to Susan Connery, Bernadette Leigh i David Suru. Chcesz przejrzeć nadchodzące artykuły MSDN? Jeśli tak, upuść mi wiersz pod adresem mitchell@4GuysFromRolla.com.