Sdílet prostřednictvím


Návod: Zobrazení dat z databáze SQL Serveru v ovládacím prvku DataGrid

V tomto názorném postupu načtete data z databáze SQL Serveru a zobrazíte je v ovládacím prvku DataGrid. Použijete ADO.NET Entity Framework k vytvoření tříd entit, které představují data, a pomocí LINQ napsat dotaz, který načte zadaná data z třídy entity.

Požadavky

K dokončení tohoto návodu potřebujete následující komponenty:

  • Visual Studio.

  • Přístup ke spuštěné instanci SQL Serveru nebo SQL Serveru Express, která má připojenou ukázkovou databázi AdventureWorks. Databázi AdventureWorks si můžete stáhnout zGitHubu .

Vytvoření tříd entit

  1. Vytvořte nový projekt aplikace WPF v jazyce Visual Basic nebo C# a pojmenujte ho DataGridSQLExample.

  2. V Průzkumníku řešení klikněte pravým tlačítkem na váš projekt, přejeďte na Přidata vyberte Novou položku.

    Zobrazí se dialogové okno Přidat novou položku.

  3. V podokně Nainstalované šablony vyberte Data a v seznamu šablon vyberte ADO.NET Entity Data Model.

    ADO.NET šablony položky modelu Entity Data Model

  4. Pojmenujte soubor AdventureWorksModel.edmx a klepněte na tlačítko Přidat.

    Zobrazí se Průvodce datovým modelem entity.

  5. Na obrazovce Zvolit obsah modelu vyberte EF Designer z databáze a potom klikněte na Další.

  6. Na obrazovce Zvolit datové připojení zadejte připojení k databázi AdventureWorksLT2008. Další informace naleznete v tématu Dialogové okno pro výběr datového připojení.

    Ujistěte se, že je název nastaven na AdventureWorksLT2008Entities a že je zaškrtnuto políčko s názvem Uložit nastavení připojení entity v App.Config jako, a potom klikněte na Další.

  7. Na obrazovce Zvolit databázové objekty rozbalte uzel Tabulky a vyberte tabulky Product a ProductCategory.

    Třídy entit můžete generovat pro všechny tabulky; V tomto příkladu však načtete pouze data z těchto dvou tabulek.

    Vyberte produkt a ProductCategory z tabulek

  8. Klikněte na Finish (Dokončit).

    Produkt a kategorie produktů jsou zobrazeny v návrháři entit.

    modely entit Product a ProductCategory

Načtení a prezentace dat

  1. Otevřete soubor MainWindow.xaml.

  2. Nastavte vlastnost Width na Window na 450.

  3. V editoru XAML přidejte mezi značky DataGrid a <Grid> následující značku </Grid> a přidejte DataGrid pojmenovanou dataGrid1.

    <DataGrid Name="dataGrid1" />
    

    Okno se službou DataGrid

  4. Vyberte Window.

  5. Pomocí okna Vlastnosti nebo editoru XAML vytvořte obslužnou rutinu události pro Window pojmenovanou Window_Loaded pro událost Loaded. Další informace naleznete v tématu Jak na to: Vytvoření jednoduché obslužné rutiny události.

    Následující příklad ukazuje XAML pro MainWindow.xaml.

    Poznámka:

    Pokud používáte Visual Basic, v prvním řádku MainWindow.xaml nahraďte x:Class="DataGridSQLExample.MainWindow"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. Otevřete soubor s vloženým kódem (MainWindow.xaml.vb nebo MainWindow.xaml.cs) pro Window.

  7. Přidejte následující kód pro načtení pouze konkrétních hodnot ze spojených tabulek a nastavte vlastnost ItemsSource objektu DataGrid podle výsledků dotazu.

    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.Linq
    
    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 query = _
                From product In dataEntities.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. Spusťte příklad.

    Měla by se zobrazit DataGrid, která zobrazuje data.

    DataGrid s daty z databáze SQL

Viz také