Partager via


Lier des contrôles WPF à un jeu de données dans des applications .NET Framework

Remarque

La DataSet classe et les classes associées sont des technologies .NET Framework héritées du début des années 2000 qui permettent aux applications d’utiliser des données en mémoire pendant que les applications sont déconnectées de la base de données. Les technologies sont particulièrement utiles pour les applications qui permettent aux utilisateurs de modifier les données et de conserver les modifications apportées à la base de données. Bien que les jeux de données soient une technologie éprouvée, l’approche recommandée pour les nouvelles applications .NET consiste à utiliser Entity Framework Core. Entity Framework offre un moyen plus naturel d’utiliser des données tabulaires en tant que modèles objet et dispose d’une interface de programmation plus simple.

Dans cette procédure pas à pas, vous créez une application WPF qui contient des contrôles liés aux données. Les contrôles sont liés aux enregistrements de produit encapsulés dans un jeu de données. Vous ajoutez également des boutons pour parcourir les produits et enregistrer les modifications apportées aux enregistrements de produits.

Cette procédure pas à pas présente les tâches suivantes :

  • Création d’une application WPF et d’un jeu de données générés à partir de données dans l’exemple de base de données AdventureWorksLT.

  • Création d’un jeu de contrôles liés aux données en faisant glisser une table de données de la fenêtre Sources de données vers une fenêtre du Concepteur WPF.

  • Création de boutons permettant de parcourir les enregistrements de produit en avant et en arrière.

  • Création d’un bouton qui enregistre les modifications apportées par les utilisateurs aux enregistrements de produit dans la table de données et la source de données sous-jacente.

Remarque

Les instructions de cet article illustrent la version la plus récente de l’expérience de développement interactive (IDE) disponible dans Visual Studio. Votre ordinateur peut afficher différents noms ou emplacements pour certains des éléments de l’interface utilisateur. Vous utilisez peut-être une version différente de Visual Studio ou des paramètres d’environnement différents. Pour plus d’informations, consultez Personnaliser l’IDE.

Conditions préalables

Vous avez besoin des composants suivants pour effectuer cette procédure pas à pas :

  • Pour suivre ce tutoriel, vous avez besoin des charges de travail de développement et de traitement de données.NET desktop installées dans Visual Studio. Pour les installer, ouvrez visual Studio Installer et choisissez Modifier (ou Plus>Modifier) en regard de la version de Visual Studio que vous souhaitez modifier. Consultez Modifier Visual Studio.

  • Accès à une instance en cours d’exécution de SQL Server ou DE SQL Server Express avec l’exemple de base de données AdventureWorks Light (AdventureWorksLT) qui lui est attachée. Pour télécharger la base de données, consultez les exemples de bases de données AdventureWorks.

Une connaissance préalable des concepts suivants est également utile, mais elle n’est pas nécessaire pour effectuer la procédure pas à pas :

Créer le projet

Créez un nouveau projet WPF pour afficher les enregistrements de produits.

  1. Ouvrez Visual Studio.

  2. Dans la fenêtre de démarrage, choisissez Créer un projet.

  3. Recherchez le modèle de projet d’application WPF C# et suivez les étapes pour créer le projet, en nommant le projet AdventureWorksProductsEditor.

    Visual Studio crée le projet AdventureWorksProductsEditor.

Créer un jeu de données pour l’application

Avant de pouvoir créer des contrôles liés aux données, vous devez définir un modèle de données pour votre application et l’ajouter à la fenêtre Sources de données . Dans cette procédure pas à pas, vous créez un jeu de données à utiliser comme modèle de données.

  1. Dans le menu Données , cliquez sur Afficher les sources de données.

    La fenêtre Sources de données s’ouvre.

  2. Dans la fenêtre Sources de Données, cliquez sur Ajouter une nouvelle source de données.

    L’Assistant Configuration de source de données s’ouvre.

  3. Dans la page Choisir un type de source de données , sélectionnez Base de données, puis Sélectionnez Suivant.

  4. Dans la page Choisir un modèle de base de données , sélectionnez Dataset, puis sélectionnez Suivant.

  5. Dans la page Choisir votre connexion de données , sélectionnez l’une des options suivantes :

    • Si une connexion de données à l’exemple de base de données AdventureWorksLT est disponible dans la liste déroulante, sélectionnez-la, puis sélectionnez Suivant.

    • Cliquez sur Nouvelle connexion, puis créez une connexion à la base de données AdventureWorksLT.

  6. Dans la page Enregistrer la chaîne de connexion dans la page Configurer le fichier de configuration de l’application , activez la case Oui, enregistrez la connexion sous forme de case, puis sélectionnez Suivant.

  7. Dans la page Choisir vos objets de base de données, développez Tables, puis sélectionnez la table Product (SalesLT).

  8. Cliquez sur Terminer.

    Visual Studio ajoute un nouveau AdventureWorksLTDataSet.xsd fichier au projet et ajoute un élément AdventureWorksLTDataSet correspondant à la fenêtre Sources de données . Le AdventureWorksLTDataSet.xsd fichier définit un jeu de données typé nommé AdventureWorksLTDataSet et un TableAdapter nommé ProductTableAdapter. Plus loin dans ce guide étape par étape, vous utiliserez le ProductTableAdapter pour remplir le jeu de données avec des données et enregistrer les modifications dans la base de données.

  9. Construisez le projet.

Modifier la méthode de remplissage par défaut de TableAdapter

Pour remplir le jeu de données avec des données, utilisez la Fill méthode du ProductTableAdapter. Par défaut, la méthode Fill remplit le ProductDataTable dans le AdventureWorksLTDataSet avec toutes les lignes de données de la table Product. Vous pouvez modifier cette méthode pour retourner uniquement un sous-ensemble des lignes. Pour cette procédure pas à pas, modifiez la Fill méthode pour renvoyer uniquement les lignes des produits qui ont des photos.

  1. Dans l’Explorateur de solutions, double-cliquez sur le fichier AdventureWorksLTDataSet.xsd .

    Le Concepteur de DataSet s'ouvre.

  2. Dans le concepteur, cliquez avec le bouton droit sur la requête Fill, GetData() et sélectionnez Configurer.

    L’Assistant Configuration de TableAdapter s’ouvre.

  3. Dans la page Entrer une instruction SQL , ajoutez la clause suivante WHERE après l’instruction SELECT dans la zone de texte.

    WHERE ThumbnailPhotoFileName <> 'no_image_available_small.gif'
    
  4. Cliquez sur Terminer.

Définir l’interface utilisateur

Ajoutez plusieurs boutons à la fenêtre en modifiant le code XAML dans le Concepteur WPF. Plus loin dans cette procédure pas à pas, vous allez ajouter du code qui permet aux utilisateurs de parcourir et d’enregistrer les modifications apportées aux enregistrements de produits à l’aide de ces boutons.

  1. Dans l’Explorateur de solutions, double-cliquez sur MainWindow.xaml.

    La fenêtre s’ouvre dans le Concepteur WPF.

  2. Dans la vue XAML du concepteur, ajoutez le code suivant entre les <Grid> balises :

    <Grid.RowDefinitions>
        <RowDefinition Height="75" />
        <RowDefinition Height="625" />
    </Grid.RowDefinitions>
    <Button HorizontalAlignment="Left" Margin="22,20,0,24" Name="backButton" Width="75">&lt;</Button>
    <Button HorizontalAlignment="Left" Margin="116,20,0,24" Name="nextButton" Width="75">&gt;</Button>
    <Button HorizontalAlignment="Right" Margin="0,21,46,24" Name="saveButton" Width="110">Save changes</Button>
    
  3. Construisez le projet.

Créer des contrôles liés aux données

Créez des contrôles qui affichent les enregistrements client en faisant glisser la Product table de la fenêtre Sources de données vers le Concepteur WPF.

  1. Dans la fenêtre Sources de données , cliquez sur le menu déroulant de la liste déroulante du nœud Produit , puis sélectionnez Détails.

  2. Développez le nœud Product .

  3. Pour cet exemple, certains champs ne s’affichent pas. Cliquez donc sur le menu déroulant en regard des nœuds suivants, puis sélectionnez Aucun :

    • ID de Catégorie de Produit

    • ProductModelID

    • ThumbnailPhotoFileName

    • rowguid

    • Date de modification

  4. Cliquez sur le menu déroulant en regard du nœud ThumbNailPhoto , puis sélectionnez Image.

    Remarque

    Par défaut, les éléments de la fenêtre Sources de données qui représentent les images ont leur contrôle par défaut défini sur None. Cela est dû au fait que les images sont stockées sous forme de tableaux d’octets dans des bases de données, et que les tableaux d’octets peuvent contenir n’importe quoi d’un tableau simple d’octets au fichier exécutable d’une grande application.

  5. Dans la fenêtre Sources de données , faites glisser le nœud Product vers la ligne de grille sous la ligne qui contient les boutons.

    Visual Studio génère du code XAML qui définit un ensemble de contrôles liés aux données de la table Products . Il génère également du code qui charge les données. Pour plus d’informations sur le code et le code XAML générés, consultez Lier des contrôles WPF aux données dans Visual Studio.

  6. Dans le concepteur, cliquez sur la zone de texte à côté de l’étiquette Identifiant de produit.

  7. Dans la fenêtre Propriétés , cochez la case en regard de la propriété IsReadOnly .

Ajoutez du code qui permet aux utilisateurs de parcourir les enregistrements de produits à l’aide des boutons < et >.

  1. Dans le concepteur, double-cliquez sur le bouton < de la fenêtre.

    Visual Studio ouvre le fichier code-behind et crée un gestionnaire d’événements backButton_Click pour l’événement Click .

  2. Modifiez le Window_Loaded gestionnaire d’événements, ainsi le ProductViewSource, AdventureWorksLTDataSetet AdventureWorksLTDataSetProductTableAdapter sont en dehors de la méthode et accessibles à l’intégralité du formulaire. Déclarez uniquement ces éléments pour être globaux dans le formulaire et affectez-les dans le Window_Loaded gestionnaire d’événements comme suit :

    private AdventureWorksProductsEditor.AdventureWorksLTDataSet AdventureWorksLTDataSet;
    private AdventureWorksProductsEditor.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter adventureWorksLTDataSetProductTableAdapter;
    private System.Windows.Data.CollectionViewSource productViewSource;
    
    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        AdventureWorksLTDataSet = ((AdventureWorksProductsEditor.AdventureWorksLTDataSet)(this.FindResource("adventureWorksLTDataSet")));
        // Load data into the table Product. You can modify this code as needed.
        adventureWorksLTDataSetProductTableAdapter = new AdventureWorksProductsEditor.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter();
        adventureWorksLTDataSetProductTableAdapter.Fill(AdventureWorksLTDataSet.Product);
        productViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("productViewSource")));
        productViewSource.View.MoveCurrentToFirst();
    }
    
  3. Ajoutez le code suivant au gestionnaire d’événements backButton_Click :

    if (productViewSource.View.CurrentPosition > 0)
    {
        productViewSource.View.MoveCurrentToPrevious();
    }
    
  4. Revenez dans le concepteur et double-cliquez sur le bouton >.

  5. Ajoutez le code suivant au gestionnaire d’événements nextButton_Click :

    if (productViewSource.View.CurrentPosition < ((CollectionView)productViewSource.View).Count - 1)
    {
        productViewSource.View.MoveCurrentToNext();
    }
    

Enregistrer les modifications apportées aux enregistrements de produit

Ajoutez du code qui permet aux utilisateurs d’enregistrer les modifications apportées aux enregistrements de produits à l’aide du bouton Enregistrer les modifications .

  1. Dans le concepteur, double-cliquez sur le bouton Enregistrer les modifications .

    Visual Studio ouvre le fichier code-behind et crée un gestionnaire d’événements saveButton_Click pour l’événement Click .

  2. Ajoutez le code suivant au gestionnaire d’événements saveButton_Click :

    adventureWorksLTDataSetProductTableAdapter.Update(AdventureWorksLTDataSet.Product);
    

    Remarque

    Cet exemple utilise la Save méthode de l’objet TableAdapter pour enregistrer les modifications. Cela convient dans cette procédure pas à pas, car une seule table de données est modifiée. Si vous devez enregistrer des modifications dans plusieurs tables de données, vous pouvez aussi utiliser la méthode UpdateAll que Visual Studio génère avec votre jeu de données. Pour plus d’informations, consultez TableAdapters.

Tester l’application

Générez et exécutez l’application. Vérifiez que vous pouvez afficher et mettre à jour les enregistrements de produit.

  1. Appuyez sur F5.

    L’application génère et s’exécute. Vérifiez les éléments suivants :

    • Les zones de texte affichent les données du premier enregistrement de produit qui a une photo. Ce produit a l’ID de produit 713 et le nom Long-Sleeve Logo Jersey, S.

    • Vous pouvez cliquer sur les boutons > ou < pour naviguer à travers d'autres enregistrements de produits.

  2. Dans l’un des enregistrements de produit, modifiez la valeur Taille , puis sélectionnez Enregistrer les modifications.

  3. Fermez l’application, puis redémarrez l’application en appuyant sur F5 dans Visual Studio.

  4. Accédez à l’enregistrement de produit que vous avez modifié et vérifiez que la modification est persistante.

  5. Fermez l’application.

Étapes suivantes

Une fois cette procédure pas à pas terminée, vous pouvez essayer les tâches associées suivantes :