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é
Créez un projet d'application WPF en Visual Basic ou C#, et nommez-le DataGridSQLExample.
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.
Dans le volet Modèles installés, sélectionnez Données, puis dans la liste de modèles, choisissez ADO.NET Entity Data Model.
Renommez le fichier AdventureWorksModel.edmx, puis cliquez sur Ajouter.
L'Assistant Entity Data Model s'affiche.
Dans l'écran Choisir le contenu du Model, sélectionnez Générer à partir de la base de données, puis sur Suivant.
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.
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.
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.
Cliquez sur Terminer.
Les entités Product et ProductCategory sont affichées dans le concepteur d'entités.
Pour extraire et présenter les données
Ouvrez le fichier MainWindow.xaml.
Dans l'éditeur XAML, ajoutez la balise DataGrid suivante entre les balises <Grid> et </Grid> pour ajouter un DataGrid nommé dataGrid1.
<DataGrid Name="dataGrid1" />
Sélectionnez la Window.
À 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.
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="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>
Ouvrez le fichier code-behind (MainWindow.xaml.vb ou MainWindow.xaml.cs) correspondant à Window.
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(); } } }
Exécutez l'exemple.
Un DataGrid présentant des données doit s'afficher.
Voir aussi
Référence
Autres ressources
Comment procéder : démarrer avec Entity Framework dans les applications WPF ?