Udostępnij za pośrednictwem


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

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 przeanalizowane do tej pory samouczki używały architektury warstwowej składającej się z warstw prezentacji, logiki biznesowej i warstw 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ą obiektuDataSource , zobaczyliśmy, jak używać nowej kontrolki ObjectDataSource ASP.NET 2.0 s 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 zapewnia 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 Microsoft SQL Server, Microsoft Access, Oracle, MySQL i innych. W tym samouczku i następnych trzech opisano 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ęć Built-In kontrolek źródła danych

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

Porównanie obiektów ObjectDataSource i SqlDataSource

Koncepcyjnie zarówno kontrolki ObjectDataSource, jak i SqlDataSource są po prostu serwerami proxy danych. Jak opisano w samouczku Wyświetlanie danych za pomocą obiektu ObjectDataSource , obiekt ObjectDataSource ma właściwości wskazujące typ obiektu, który dostarcza dane i metody wywoływania do wybierania, wstawiania, aktualizowania i usuwania danych z bazowego typu obiektu. Po skonfigurowaniu właściwości objectDataSource kontrolka sieci Web danych, taka jak GridView, DetailsView lub DataList, może być powiązana z kontrolką przy użyciu metody ObjectDataSource s Select(), Insert(), Delete()i Update() do interakcji z podstawową architekturą.

Usługa SqlDataSource zapewnia tę samą funkcjonalność, ale działa w odniesieniu do 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 mają być wykonywane w celu wstawiania, aktualizowania, usuwania i pobierania danych. Metody sqlDataSource s Select(), Insert(), Update()i Delete() , po wywołaniu, łączą się z określoną bazą danych i wystawiają odpowiednie zapytanie SQL. Jak pokazano na poniższym diagramie, te metody wykonują chrzętną pracę podczas nawiązywania połączenia z bazą danych, wystawiania zapytania i zwracania wyników.

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

Rysunek 2. Baza danych SqlDataSource służy jako serwer proxy do bazy danych

Uwaga

W tym samouczku skupimy się na pobieraniu danych z bazy danych. W samouczku Wstawianie, aktualizowanie i usuwanie danych za pomocą kontrolki SqlDataSource zobaczymy, jak skonfigurować usługę SqlDataSource do 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 firmą Microsoft SQL Server. Chociaż usługa AccessDataSource jest przeznaczona do pracy w szczególności 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 ze standardem 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 eksplorować sposób pracy bezpośrednio z danymi bazy danych przy użyciu kontrolki SqlDataSource, najpierw utwórzmy strony ASP.NET w naszym projekcie witryny internetowej, których będziemy potrzebować w tym samouczku i następnych trzech. Zacznij od dodania nowego folderu o nazwie SqlDataSource. Następnie dodaj do tego folderu następujące strony ASP.NET, 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 dotyczących SqlDataSource-Related

Rysunek 3. Dodawanie stron ASP.NET dla samouczków SqlDataSource-Related

Podobnie jak w przypadku innych folderów Default.aspx , w SqlDataSource folderze zostaną wyświetlone samouczki w swojej sekcji. Pamiętaj, że kontrolka SectionLevelTutorialListing.ascx użytkownika zapewnia tę funkcję. W związku z tym dodaj tę kontrolkę Default.aspx użytkownika, przeciągając ją z Eksplorator rozwiązań do widoku projektu strony.

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 pełnowymiarowy)

Na koniec dodaj te cztery strony jako wpisy do Web.sitemap pliku. W szczególności dodaj następujące znaczniki 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święć 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 dla 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 Projekt. Przeciągnij kontrolkę SqlDataSource z przybornika na Projektant i ustaw jej ID wartość ProductsDataSourcena . Podobnie jak w przypadku obiektu ObjectDataSource, źródło SqlDataSource nie generuje żadnych renderowanych danych wyjściowych i dlatego pojawia się 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 pozycję Configure Data Source Link (Konfigurowanie Source Link danych) z tagu inteligentnego usługi SqlDataSource

Rysunek 6. Kliknij pozycję Konfiguruj dane Source Link z tagu inteligentnego usługi SqlDataSource

Spowoduje to wyświetlenie kreatora konfigurowania źródła danych kontrolki SqlDataSource. Mimo że 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 wiąże się to z określeniem bazowej bazy danych do użycia i udostępnieniem instrukcji AD hoc SQL 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 Data Connections 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 Drop-Down

Rysunek 7. Wybieranie NORTHWINDConnectionString elementu z listy Drop-Down

Po wybraniu bazy danych kreator prosi o zwrócenie danych przez zapytanie. Możemy określić kolumny tabeli lub widoku do zwrócenia lub wprowadzić niestandardową instrukcję SQL lub określić procedurę składowaną. Możesz przełączać się między tym wyborem za pomocą opcji Określ niestandardową instrukcję SQL lub procedurę składowaną oraz 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śl kolumny z tabeli lub widoku. Lista rozwijana zawiera zestaw tabel i widoków w bazie danych Northwind z wybraną tabelą lub wyświetlaniem kolumn wyświetlanych 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 wynikową instrukcję 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 jedynie przypisuje wartości do właściwości kontrolki, a mianowicie ConnectionString właściwości i SelectCommand . Po ukończeniu pracy kreatora znacznik deklaratywny 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 na kodzie wartości parametry połączenia lub wskazać parametry połączenia w pliku Web.config. Aby odwołać się do wartości parametry połączenia w Web.config, użyj składni <%$ expressionPrefix:expressionValue %>. Zazwyczaj wyrażeniePrefix to ConnectionStrings, a expressionValue to nazwa parametrów połączenia w Web.config<connectionStrings> 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 powią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 elemecie GridView. Z przybornika przeciągnij element GridView na stronę i powiąż go ProductsDataSource z usługą SqlDataSource, wybierając źródło danych z listy rozwijanej w tagu inteligentnym GridView.

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

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

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 kontrolę źródła danych. Ponieważ źródło SqlDataSource zwraca trzy kolumny ProductIDbazy danych , ProductNamei UnitPrice istnieją trzy pola w elemecie GridView.

Poświęć chwilę na skonfigurowanie trzech elementów BoundFields elementu GridView. ProductName Zmień właściwość pola HeaderText na Product Name (Nazwa produktu) i UnitPrice pole s na Price (Cena). Sformatuj UnitPrice również pole jako walutę. Po wprowadzeniu tych modyfikacji znacznik deklaratywny kontrolki 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 , ProductIDi ProductNameUnitPrice wartości.

Obiekt GridView wyświetla wartości ProductID, ProductName i UnitPrice dla każdego produktu

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

Po odwiedzeniu strony element GridView wywołuje metodę kontroli Select() źródła danych. Gdy używaliśmy kontrolki ObjectDataSource, nazwaliśmy ProductsBLL to metodą klasy s GetProducts() . Jednak w Select() usłudze SqlDataSource metoda ustanawia połączenie z określoną bazą danych i wystawia element SelectCommand (SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]w tym przykładzie). Funkcja SqlDataSource zwraca wyniki, które następnie wylicza GridView, tworząc wiersz w elemecie GridView dla każdego zwróconego rekordu bazy danych.

Funkcje kontroli sieci Web danych Built-In i kontrolka SqlDataSource

Ogólnie rzecz biorąc, funkcje związane z stronicowaniem, sortowaniem, sortowaniem, edytowaniem, 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, czy jest on powiązany z obiektem ObjectDataSource, czy 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 danych kontrolki Sieci Web naiwnie zwraca wszystkie rekordy ze 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 podzestaw 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 pośrednictwem elementu 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. Całkowita liczba rekordów zwracanych przez zapytanie ma zasadnicze znaczenie dla implementacji stronicowania można ustalić z zestawu danych. Ponadto wyniki zestawu danych można sortować za pomocą elementu DataView. Te możliwości są automatycznie używane przez usługę SqlDataSource, gdy żądania GridView są stronicowane lub posortowane.

Źródło SqlDataSource można skonfigurować tak, aby zwracało element DataReader zamiast zestawu danych, zmieniając jegoDataSourceMode właściwość z DataSet (domyślnej) na DataReader. Użycie elementu DataReader może być preferowane w sytuacjach podczas przekazywania wyników 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 stron, ponieważ usługa SqlDataSource nie może ustalić, ile rekordów jest zwracanych przez zapytanie, ani usługa DataReader nie oferuje żadnych technik sortowania zwróconych 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 opcję utworzenia 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 na rysunku 7, wybierz NORTHWINDConnectionString z 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 Definiowanie instrukcji niestandardowych lub procedur składowanych, który oferuje karty oznaczone etykietą SELECT, UPDATE, INSERT i DELETE. Na każdej karcie można 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 w polu tekstowym użyj następującego zapytania, aby zwrócić ProductID pola i ProductName z tabeli przy użyciu elementu a JOIN , aby pobrać produkt CategoryName z CategoriesProducts tabeli:

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

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

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

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

Po zakończeniu pracy kreatora element GridView będzie miał do niego dodane trzy pola BoundFields z ProductIDwyświetlonymi kolumnami , ProductNamei CategoryName zwróconymi z zapytania i w wyniku następującego deklaratywnego znaczników:

<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 wyświetla każdy identyfikator, nazwę i skojarzona nazwa kategorii produktu

Rysunek 15. Widok GridView przedstawia identyfikator, nazwę i skojarzona nazwa kategorii (kliknij, aby wyświetlić obraz pełnowymiarowy)

Podsumowanie

W tym samouczku pokazano, jak wykonywać zapytania o dane i wyświetlać je przy użyciu kontrolki SqlDataSource. Podobnie jak obiekt ObjectDataSource, usługa 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ń zbadane 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 ciągu 24 godzin. Można do niego dotrzeć 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 sprawdzona przez wielu pomocnych recenzentów. Recenzenci w tym samouczku byli 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.