Udostępnij za pośrednictwem


Przewodnik: wyświetlanie danych z bazy danych programu SQL Server w kontrolce DataGrid

W tym przewodniku dane są pobierane z bazy danych programu SQL Server i wyświetlane w kontrolce DataGrid. Użyjesz ADO.NET Entity Framework, aby utworzyć klasy jednostek, które reprezentują dane, i użyć LINQ do zapisania zapytania pobierającego określone dane z klasy jednostki.

Wymagania wstępne

Do ukończenia tego przewodnika potrzebne są następujące składniki:

  • Visual Studio.

  • Dostęp do uruchomionego wystąpienia programu SQL Server lub programu SQL Server Express z dołączoną przykładową bazą danych AdventureWorks. Bazę danych AdventureWorks można pobrać z witryny GitHub.

Tworzenie klas jednostek

  1. Utwórz nowy projekt aplikacji WPF w Visual Basic lub C#i nadaj mu nazwę DataGridSQLExample.

  2. W Eksploratorze Rozwiązań kliknij prawym przyciskiem myszy na projekt, wskaż polecenie Dodaj, a następnie wybierz pozycję Nowy element.

    Zostanie wyświetlone okno dialogowe Dodawanie nowego elementu.

  3. W okienku Zainstalowane szablony wybierz pozycję Dane, a na liście szablonów wybierz pozycję ADO.NET Entity Data Model.

    szablon elementu modelu danych jednostki ADO.NET

  4. Nadaj plikowi nazwę AdventureWorksModel.edmx, a następnie kliknij pozycję Dodaj.

    Zostanie wyświetlony Kreator modelu danych jednostki.

  5. Na ekranie Wybór zawartości modelu wybierz EF Designer z bazy danych, a następnie kliknij Dalej.

  6. Na ekranie Wybieranie połączenia danych podaj informacje dotyczące połączenia z bazą danych AdventureWorksLT2008. Aby uzyskać więcej informacji, zobacz okno dialogowe Wybieranie połączenia danych.

    Upewnij się, że nazwa jest AdventureWorksLT2008Entities i że zaznaczono pole wyboru Zapisz ustawienia połączenia jednostki w pliku App.Config jako, a następnie kliknij przycisk Dalej.

  7. Na ekranie Wybierz swoje obiekty bazy danych rozwiń węzeł tabel i wybierz tabelę Product oraz tabelę ProductCategory.

    Można wygenerować klasy jednostek dla wszystkich tabel; jednak w tym przykładzie dane są pobierane tylko z tych dwóch tabel.

    Wybierz Product i ProductCategory z tabel

  8. Kliknij przycisk Finish (Zakończ).

    Jednostki Product i ProductCategory są wyświetlane w Projektancie jednostek.

    modele encji Produkt i KategoriaProduktu

Pobieranie i prezentowanie danych

  1. Otwórz plik MainWindow.xaml.

  2. Ustaw właściwość Width na Window na wartość 450.

  3. W edytorze XAML dodaj następujący tag DataGrid między tagami <Grid> i </Grid>, aby dodać DataGrid o nazwie dataGrid1.

    <DataGrid Name="dataGrid1" />
    

    okno z usługą DataGrid

  4. Wybierz Window.

  5. Za pomocą okna Właściwości lub edytora XAML utwórz program obsługi zdarzeń dla Window o nazwie Window_Loaded dla zdarzenia Loaded. Aby uzyskać więcej informacji, zobacz How to: Create a Simple Event Handler.

    Poniżej przedstawiono kod XAML dla pliku MainWindow.xaml.

    Uwaga / Notatka

    Jeśli używasz języka Visual Basic, w pierwszym wierszu pliku MainWindow.xaml zastąp x:Class="DataGridSQLExample.MainWindow" ciągiem x:Class="MainWindow".

    <Window x:Class="DataGridSQLExample.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="450" 
            Loaded="Window_Loaded">
        <Grid>
            <DataGrid Name="dataGrid1" />
        </Grid>
    </Window>
    
  6. Otwórz plik kodu zaplecza (MainWindow.xaml.vb lub MainWindow.xaml.cs) dla Window.

  7. Dodaj następujący kod, aby pobrać tylko określone wartości z połączonych tabel i ustawić właściwość ItemsSource dla DataGrid na podstawie wyników zapytania.

    using System.Data.Entity.Core.Objects;
    using System.Linq;
    using System.Windows;
    
    namespace DataGridSQLExample
    {
        /// <summary>
        /// Interaction logic for MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            AdventureWorksLT2008Entities dataEntities = new AdventureWorksLT2008Entities();
    
            public MainWindow()
            {
                InitializeComponent();
            }
    
            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                var query =
                from product in dataEntities.Products
                where product.Color == "Red"
                orderby product.ListPrice
                select new { product.Name, product.Color, CategoryName = product.ProductCategory.Name, product.ListPrice };
    
                dataGrid1.ItemsSource = query.ToList();
            }
        }
    }
    
    Imports System.Data.Objects
    
    Class MainWindow
        Dim dataEntities As AdventureWorksLT2008Entities = New AdventureWorksLT2008Entities
    
        Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
            Dim products As ObjectQuery(Of Product) = dataEntities.Products
    
            Dim query = _
                From product In products _
                Where product.Color = "Red" _
                Order By product.ListPrice _
                Select product.Name, product.Color, CategoryName = product.ProductCategory.Name, product.ListPrice
    
            dataGrid1.ItemsSource = query.ToList()
        End Sub
    End Class
    
  8. Uruchom przykład.

    Powinien zostać wyświetlony DataGrid, który wyświetla dane.

    DataGrid z danymi z bazy danych SQL

Zobacz także