Partager via


Procédure pas à pas : affichage de données d'une base de données SQL Server dans un contrôle DataGrid

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

Composants requis

Pour exécuter cette procédure pas à pas, vous devez disposer des composants suivants :

  • Visual Studio 2010.

  • Accès à une instance en cours d'exécution de SQL Server ou SQL Server Express à laquelle l'exemple de base de données AdventureWorksLT2008 est attaché. Vous pouvez télécharger la base de données AdventureWorksLT2008 à partir du site Web CodePlex (éventuellement en anglais).

Pour créer des classes d'entité

  1. Créez un projet d'application WPF en Visual Basic ou C#, et 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, puis dans la liste de modèles, choisissez ADO.NET Entity Data Model.

    Sélectionner ADO.NET Entity Data Model

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

    L'Assistant Entity Data Model s'affiche.

  5. Dans l'écran Choisir le contenu du Model, sélectionnez Générer à partir de la base de données, puis sur Suivant.

    Sélectionner l'option Générer à partir de la base de données

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

    Fournir la connexion à la base de données

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

  8. 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, vous extrayez seulement des données de ces deux tables dans cet exemple.

    Sélectionner Product et ProductCategory dans les tables

  9. 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

Pour extraire et présenter les données

  1. Ouvrez le fichier MainWindow.xaml.

  2. Affectez à la propriété Width sur la Window la valeur 450.

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

    <DataGrid Name="dataGrid1" />
    

    Fenêtre avec DataGrid

  4. Sélectionnez la 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 qui correspond à l'événement Loaded. Pour plus d'informations, consultez Comment : créer un gestionnaire d'événements simple.

    Le code XAML correspondant à MainWindow.xaml est présenté ci-dessous.

    RemarqueRemarque

    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="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="https://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) correspondant à Window.

  7. Ajoutez le code suivant pour extraire uniquement des valeurs spécifiques des tables jointes et affecter à la propriété ItemsSource de la DataGrid les résultats de la requête.

    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
    
    using System.Data.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)
            {
                ObjectQuery<Product> products = dataEntities.Products;
    
                var query =
                from product in products
                where product.Color == "Red"
                orderby product.ListPrice
                select new { product.Name, product.Color, CategoryName = product.ProductCategory.Name, product.ListPrice };
    
                dataGrid1.ItemsSource = query.ToList();
            }
        }
    }
    
  8. Exécutez l'exemple.

    Un DataGrid présentant des données doit s'afficher.

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

Voir aussi

Référence

DataGrid

Autres ressources

Comment procéder : démarrer avec Entity Framework dans les applications WPF ?