Freigeben über


Exemplarische Vorgehensweise: Anzeigen von Daten aus einer SQL Server-Datenbank in einem DataGrid-Steuerelement

In dieser exemplarischen Vorgehensweise rufen Sie Daten aus einer SQL Server-Datenbank ab und zeigen diese Daten in einem DataGrid-Steuerelement an. Mit dem ADO.NET Entity Framework erstellen Sie die Entitätsklassen, die die Daten darstellen, und verwenden SIE LINQ, um eine Abfrage zu schreiben, die die angegebenen Daten aus einer Entitätsklasse abruft.

Voraussetzungen

Sie benötigen die folgenden Komponenten, um diese Schritt-für-Schritt-Anleitung abzuschließen.

  • Visual Studio.

  • Zugriff auf eine ausgeführte Instanz von SQL Server oder SQL Server Express, die der AdventureWorks-Beispieldatenbank zugeordnet ist. Sie können die AdventureWorks-Datenbank von GitHub herunterladen.

Erstellen von Entitätsklassen

  1. Erstellen Sie ein neues WPF-Anwendungsprojekt in Visual Basic oder C#, und nennen Sie es DataGridSQLExample.

  2. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, zeigen Sie auf Hinzufügen, und wählen Sie Neues Element aus.

    Das Dialogfeld "Neues Element hinzufügen" wird angezeigt.

  3. Wählen Sie im Bereich „Installierte Vorlagen“ die Option Daten und in der Liste der Vorlagen ADO.NET Entity Data Model aus.

    ADO.NET Entity Data Model-Elementvorlage

  4. Nennen Sie die Datei AdventureWorksModel.edmx, und klicken Sie dann auf Hinzufügen.

    Der Entitätsdatenmodell-Assistent wird angezeigt.

  5. Wählen Sie auf dem Bildschirm „Modellinhalt auswählen“ die Option EF-Designer aus Datenbank aus, und klicken Sie dann auf Weiter.

  6. Geben Sie im Fenster 'Datenverbindung auswählen' die Verbindung zu Ihrer AdventureWorksLT2008-Datenbank an. Weitere Informationen finden Sie im Dialogfeld „Wählen Sie Ihre Datenverbindung aus“.

    Stellen Sie sicher, dass der Name AdventureWorksLT2008Entities und das Kontrollkästchen Einstellungen Entitätsverbindung in App.Config speichern als ausgewählt ist, und klicken Sie dann auf Weiter.

  7. Erweitern Sie auf dem Bildschirm „Wählen Sie Ihre Datenbankobjekte aus“ den Knoten „Tabellen“, und wählen Sie die Tabellen Product und ProductCategory aus.

    Sie können Entitätsklassen für alle Tabellen generieren; In diesem Beispiel rufen Sie jedoch nur Daten aus diesen beiden Tabellen ab.

    Auswählen von „Product“ und „ProductCategory“ aus Tabellen

  8. Klicken Sie auf Fertig stellen.

    Die Entitäten "Product" und "ProductCategory" werden im Entitäts-Designer angezeigt.

    Entitätsmodelle „Product“ und „ProductCategory“

Abrufen und Darstellen der Daten

  1. Öffnen Sie die Datei "MainWindow.xaml".

  2. Legen Sie die Width-Eigenschaft von Window auf 450 fest.

  3. Fügen Sie im XAML-Editor das folgende DataGrid-Tag zwischen den <Grid>- und </Grid>-Tags hinzu, um eine DataGrid mit dem Namen dataGrid1hinzuzufügen.

    <DataGrid Name="dataGrid1" />
    

    Fenster mit „DataGrid“

  4. Wählen Sie Window aus.

  5. Erstellen Sie mithilfe des Eigenschaftenfenster- oder XAML-Editors einen Ereignishandler für das Window mit dem Namen Window_Loaded für das Loaded-Ereignis. Weitere Informationen finden Sie unter Erstellen eines einfachen Ereignishandlers.

    Die folgende Abbildung zeigt den XAML-Code für "MainWindow.xaml".

    Hinweis

    Wenn Sie Visual Basic verwenden, ersetzen Sie in der ersten Zeile von "MainWindow.xaml" x:Class="DataGridSQLExample.MainWindow" durch 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. Öffnen Sie die CodeBehind-Datei („MainWindow.xaml.vb“ oder „MainWindow.xaml.cs“) für Window.

  7. Fügen Sie den folgenden Code hinzu, um nur bestimmte Werte aus den verknüpften Tabellen abzurufen und die ItemsSource-Eigenschaft der DataGrid auf die Ergebnisse der Abfrage festzulegen.

    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. Führen Sie das Beispiel aus.

    Sie sollten eine DataGrid-Klasse sehen, die Daten anzeigt.

    „DataGrid“ mit Daten aus der SQL-Datenbank

Siehe auch