Delen via


Overzicht: Gegevens uit een SQL Server-database weergeven in een DataGrid-besturingselement

In deze handleiding haalt u gegevens op uit een SQL Server-database en geeft u die gegevens weer in een DataGrid-controle-element. U gebruikt het ADO.NET Entity Framework om de entiteitsklassen te maken die de gegevens vertegenwoordigen en linq te gebruiken om een query te schrijven waarmee de opgegeven gegevens uit een entiteitsklasse worden opgehaald.

Vereiste voorwaarden

U hebt de volgende onderdelen nodig om dit scenario te voltooien:

  • Visual Studio.

  • Toegang tot een actief exemplaar van SQL Server of SQL Server Express waaraan de AdventureWorks-voorbeelddatabase is gekoppeld. U kunt de AdventureWorks-database downloaden van de GitHub.

Entiteitsklassen maken

  1. Maak een nieuw WPF-toepassingsproject in Visual Basic of C# en noem het DataGridSQLExample.

  2. Klik in Solution Explorer met de rechtermuisknop op uw project, wijs Toevoegenaan en selecteer Nieuw item.

    Het dialoogvenster Nieuw item toevoegen wordt weergegeven.

  3. In het deelvenster Geïnstalleerde sjablonen, kies Gegevens en in de lijst met sjablonen selecteer je ADO.NET Entity Data Model.

    ADO.NET sjabloon voor entiteitsgegevensmodelitems

  4. Geef het bestand een naam AdventureWorksModel.edmx en klik vervolgens op Toevoegen.

    De Entiteitsgegevensmodelwizard verschijnt.

  5. Selecteer in het scherm Modelinhoud kiezen EF Designer in database en klik vervolgens op Volgende.

  6. Geef op het scherm 'Gegevensverbinding kiezen' de verbinding met uw AdventureWorksLT2008-database op. Voor meer informatie, zie Dialoogvenster Uw gegevensverbinding kiezen.

    Zorg ervoor dat de naam AdventureWorksLT2008Entities is en dat het selectievakje Entiteitsverbindingsinstellingen opslaan in App.Config als is geselecteerd, en klik vervolgens op Volgende.

  7. Vouw in het scherm Databaseobjecten kiezen het knooppunt Tabellen uit en selecteer de tabellen Product en ProductCategory.

    U kunt entiteitsklassen genereren voor alle tabellen; In dit voorbeeld haalt u echter alleen gegevens op uit deze twee tabellen.

    Selecteer Product en ProductCategory uit tabellen

  8. Klik op Voltooien.

    De entiteiten Product en ProductCategory worden weergegeven in entity designer.

    Product- en ProductCategory-entiteitsmodellen

De gegevens ophalen en presenteren

  1. Open het bestand MainWindow.xaml.

  2. Stel de eigenschap Width op de Window in op 450.

  3. Voeg in de XAML-editor de volgende DataGrid tag toe tussen de <Grid> en </Grid> tags om een DataGrid met de naam dataGrid1toe te voegen.

    <DataGrid Name="dataGrid1" />
    

    venster met DataGrid

  4. Kies Window.

  5. Gebruik het venster Eigenschappen of de XAML-editor om een eventhandler voor de Window genaamd Window_Loaded voor het Loaded gebeurtenis te maken. Zie Procedure: Een eenvoudige gebeurtenis-handler makenvoor meer informatie.

    Hieronder ziet u de XAML voor MainWindow.xaml.

    Opmerking

    Als u Visual Basic gebruikt, vervangt u in de eerste regel van MainWindow.xaml x:Class="DataGridSQLExample.MainWindow" door 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. Open het code-behind-bestand (MainWindow.xaml.vb of MainWindow.xaml.cs) voor de Window.

  7. Voeg de volgende code toe om alleen specifieke waarden op te halen uit de gekoppelde tabellen en stel de eigenschap ItemsSource van de DataGrid in op de resultaten van de query.

    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. Voer het voorbeeld uit.

    U ziet nu een DataGrid waarin gegevens worden weergegeven.

    DataGrid met gegevens uit sql-database

Zie ook