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 à partir d’une base de données SQL Server et affichez ces données dans un contrôle DataGrid. 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é.

Conditions préalables

Vous avez besoin des composants suivants pour effectuer 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 l’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 Entity Data Model.

    Modèle d’élément ADO.NET Entity Data Model

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

    L'Assistant Entity Data Model s'affiche.

  5. Sur l'écran Choisir le contenu du modèle, sélectionnez Concepteur EF à partir de la base de données, puis cliquez sur Suivant.

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

    Vérifiez que le nom est AdventureWorksLT2008Entities et que la case Enregistrer les paramètres de connexion de l’entité dans App.Config en tant que est cochée, puis cliquez sur Suivant.

  7. Sur l’écran Choisir vos objets de base de donnée, développez le nœud Tables et 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.

    Sélectionner Product et ProductCategory dans les tables

  8. Cliquez sur Terminer.

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

    Modèles d’entité Product et ProductCategory

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

  1. Ouvrez le fichier MainWindow.xaml.

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

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

    <DataGrid Name="dataGrid1" />
    

    Fenêtre avec DataGrid

  4. Sélectionnez Window.

  5. À l’aide de la fenêtre Propriétés ou de l’éditeur XAML, créez un gestionnaire d’événements pour le Window nommé Window_Loaded pour l’événement Loaded. Pour plus d’informations, consultez la section 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 Window.

  7. Ajoutez le code suivant pour récupérer uniquement des valeurs spécifiques à partir des tables jointes et définissez la propriété ItemsSource de l'DataGrid 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 devriez voir une DataGrid qui affiche des données.

    DataGrid avec des données de la base de données SQL

Voir aussi