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é
Créez un projet d’application WPF en Visual Basic ou C#, puis nommez-le
DataGridSQLExample
.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.
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é.
Nommez le fichier
AdventureWorksModel.edmx
, puis cliquez sur Ajouter.L'Assistant Entity Data Model s'affiche.
Dans l’écran Choisir le contenu du modèle, sélectionnez EF Designer dans la base de données , puis cliquez sur Suivant.
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.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.
Cliquez sur Terminer.
Les entités Product et ProductCategory sont affichées dans le Concepteur d’entités.
Récupérer et présenter les données
Ouvrez le fichier MainWindow.xaml.
Dans l’éditeur XAML, ajoutez la balise suivante DataGrid entre les balises et
</Grid>
les<Grid>
balises pour ajouter un DataGrid nomdataGrid1
.<DataGrid Name="dataGrid1" />
Sélectionnez Window.
À 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"
parx: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>
Ouvrez le fichier code-behind (MainWindow.xaml.vb ou MainWindow.xaml.cs) pour le Window.
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
Exécutez l'exemple.
Vous devez voir un DataGrid affichage des données.
Voir aussi
.NET Desktop feedback
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour