Partager via


Procédure pas à pas : afficher des données à partir d’une base de données SQL Server dans un contrôle DataGrid

Dans cette procédure pas à pas, vous récupérez des données d’une base de données SQL Server et affichez ces données dans un DataGrid contrôle. Vous utilisez le ADO.NET Entity Framework pour créer les classes d’entité qui représentent les données et utiliser LINQ pour écrire une requête qui récupère les données spécifiées à partir d’une classe d’entité.

Prérequis

Vous devez disposer des éléments suivants pour exécuter cette procédure pas à pas :

  • Visual Studio.

  • Accès à une instance en cours d’exécution de SQL Server ou SQL Server Express avec l’exemple de base de données AdventureWorks qui lui est attachée. Vous pouvez télécharger la base de données AdventureWorks à partir de GitHub.

Créer des classes d’entité

  1. Créez un projet d’application WPF en Visual Basic ou C#, puis nommez-le DataGridSQLExample.

  2. Dans Explorateur de solutions, cliquez avec le bouton droit sur votre projet, pointez sur Ajouter, puis sélectionnez Nouvel élément.

    La boîte de dialogue Ajouter un nouvel élément s'affiche.

  3. Dans le volet Modèles installés, sélectionnez Données et, dans la liste des modèles, sélectionnez ADO.NET Modèle de données d’entité.

    ADO.NET Entity Data Model item template

  4. Nommez le fichier AdventureWorksModel.edmx , puis cliquez sur Ajouter.

    L'Assistant Entity Data Model s'affiche.

  5. Dans l’écran Choisir le contenu du modèle, sélectionnez EF Designer dans la base de données , puis cliquez sur Suivant.

  6. Dans l’écran Choisir vos données Connecter ion, fournissez la connexion à votre base de données AdventureWorksLT2008. Pour plus d’informations, consultez la boîte de dialogue Choisir votre Connecter ion de données.

    Vérifiez que le nom est AdventureWorksLT2008Entities et que les paramètres de connexion d’entité Enregistrer dans App.Config en tant que zone case activée sont sélectionnés, puis cliquez sur Suivant.

  7. Dans l’écran Choisir vos objets de base de données, développez le nœud Tables, puis sélectionnez les tables Product et ProductCategory.

    Vous pouvez générer des classes d’entité pour toutes les tables ; Toutefois, dans cet exemple, vous récupérez uniquement les données de ces deux tables.

    Select Product and ProductCategory from tables

  8. Cliquez sur Terminer.

    Les entités Product et ProductCategory sont affichées dans le Concepteur d’entités.

    Product and ProductCategory entity models

Récupérer et présenter les données

  1. Ouvrez le fichier MainWindow.xaml.

  2. Définissez la Width propriété sur la Window valeur 450.

  3. Dans l’éditeur XAML, ajoutez la balise suivante DataGrid entre les balises et </Grid> les <Grid> balises pour ajouter un DataGrid nom dataGrid1.

    <DataGrid Name="dataGrid1" />
    

    Window with DataGrid

  4. Sélectionnez Window.

  5. À l’aide de l’éditeur Fenêtre Propriétés ou XAML, créez un gestionnaire d’événements pour l’événement WindowLoaded nomméWindow_Loaded. Pour plus d’informations, voir Comment : créer un gestionnaire d’événements simple.

    L’exemple suivant montre le code XAML pour MainWindow.xaml.

    Remarque

    Si vous utilisez Visual Basic, dans la première ligne de MainWindow.xaml, remplacez x:Class="DataGridSQLExample.MainWindow" par 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. Ouvrez le fichier code-behind (MainWindow.xaml.vb ou MainWindow.xaml.cs) pour le Window.

  7. Ajoutez le code suivant pour récupérer uniquement des valeurs spécifiques des tables jointes et définissez la ItemsSource propriété de la DataGrid requête sur les résultats de la requête.

    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. Exécutez l'exemple.

    Vous devez voir un DataGrid affichage des données.

    DataGrid with data from SQL database

Voir aussi