Partager via


Mettre à jour une source de données avec des données à partir d’un contrôle hôte

Vous pouvez lier un contrôle hôte à une source de données et mettre à jour la source de données avec les modifications apportées aux données dans le contrôle. Deux étapes principales constituent ce processus :

  1. Mise à jour de la source de données en mémoire avec les données modifiées dans le contrôle. En général, la source de données en mémoire est un DataSet, un DataTableou un objet de données.

  2. Mise à jour de la base de données avec les données modifiées dans la source de données en mémoire. Ceci s’applique uniquement si la source de données est connectée à une base de données principale, par exemple une base de données SQL Server ou Microsoft Office Access.

    Pour plus d’informations sur les contrôles hôtes et la liaison de données, consultez la vue d’ensemble des éléments hôtes et des contrôles hôtes et lier des données aux contrôles dans Bureau solutions.

    S’applique à : les informations contenues dans cette rubrique s’appliquent aux projets de niveau document et aux projets de complément VSTO pour Excel et Word. Pour plus d’informations, consultez Fonctionnalités disponibles par application Office lication et le type de projet.

Mettre à jour la source de données en mémoire

Par défaut, les contrôles hôtes qui autorisent la liaison de données simple (comme les contrôles de contenu dans un document Word ou un contrôle de plage nommée dans une feuille de calcul Excel) n’enregistrent pas les modifications de données apportées à la source de données en mémoire. Autrement dit, quand un utilisateur final modifie une valeur dans un contrôle hôte, puis quitte le contrôle, la nouvelle valeur du contrôle n’est pas enregistrée automatiquement dans la source de données.

Pour enregistrer les données dans la source de données, vous pouvez écrire du code qui met à jour la source de données en réponse à un événement spécifique au moment de l’exécution, ou vous pouvez configurer le contrôle pour mettre à jour la source de données automatiquement quand la valeur du contrôle change.

Vous n’avez pas besoin d’enregistrer les modifications ListObject apportées à la source de données en mémoire. Quand vous liez un contrôle ListObject à des données, le contrôle ListObject enregistre automatiquement les modifications dans la source de données en mémoire sans que du code supplémentaire soit nécessaire.

Pour mettre à jour la source de données en mémoire au moment de l’exécution

  • Appelez la méthode WriteValue de l’objet Binding qui lie le contrôle à la source de données.

    L’exemple suivant enregistre dans la source de données les modifications apportées à un contrôle NamedRange dans une feuille de calcul Excel. Cet exemple part du principe que vous avez un contrôle NamedRange nommé namedRange1 , dont la propriété Value2 est liée à un champ dans une source de données.

    this.namedRange1.DataBindings["Value2"].WriteValue();
    

Mettre à jour automatiquement la source de données en mémoire

Vous pouvez également configurer un contrôle pour qu’il mette automatiquement à jour la source de données en mémoire. Dans un projet au niveau du document, vous pouvez pour cela utiliser du code ou le concepteur. Dans un projet de complément VSTO, vous devez utiliser du code.

Pour configurer un contrôle pour qu’il mette automatiquement à jour la source de données en mémoire à l’aide de code

  1. Utilisez le mode System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged de l’objet Binding qui lie le contrôle à la source de données. Il existe deux options de mise à jour de la source de données :

    • Pour mettre à jour la source de données lorsque le contrôle est validé, définissez cette propriété sur System.Windows.Forms.DataSourceUpdateMode.OnValidation.

    • Pour mettre à jour la source de données lorsque la valeur de la propriété liée aux données du contrôle change, définissez cette propriété sur System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged.

      Remarque

      L’option System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged ne s’applique pas aux contrôles hôtes Word, car Word n’offre pas de notifications de modification de document ou de modification de contrôle. Toutefois, vous pouvez utiliser cette option pour les contrôles Windows Forms sur les documents Word.

      L’exemple suivant configure un contrôle NamedRange pour mettre automatiquement à jour la source de données quand la valeur du contrôle change. Cet exemple part du principe que vous avez un contrôle NamedRange nommé namedRange1 , dont la propriété Value2 est liée à un champ dans une source de données.

      this.namedRange1.DataBindings["Value2"].DataSourceUpdateMode = 
          DataSourceUpdateMode.OnPropertyChanged;
      

Pour configurer un contrôle pour qu’il mette automatiquement à jour la source de données en mémoire à l’aide du concepteur

  1. Dans Visual Studio, ouvrez le document Word ou le classeur Excel dans le concepteur.

  2. Cliquez sur le contrôle qui doit mettre à jour la source de données automatiquement.

  3. Dans la fenêtre Propriétés , développez la propriété (DataBindings) .

  4. À côté de la propriété (Advanced) , cliquez sur le bouton de sélection (VisualStudioEllipsesButton screenshot).

  5. Dans la boîte de dialogue Mise en forme et liaison avancée , cliquez sur la liste déroulante Mode de mise à jour de la source de données et sélectionnez l’une des valeurs suivantes :

    • Pour mettre à jour la source de données quand le contrôle est validé, sélectionnez OnValidation.

    • Pour mettre à jour la source de données quand la valeur de la propriété liée aux données du contrôle change, sélectionnez OnPropertyChanged.

      Remarque

      L’option OnPropertyChanged ne s’applique pas aux contrôles hôtes Word, car Word n’offre pas de notifications de modification du document ou du contrôle. Toutefois, vous pouvez utiliser cette option pour les contrôles Windows Forms sur les documents Word.

  6. Fermez la boîte de dialogue Mise en forme et liaison avancée .

Mettre à jour la base de données

Si la source de données en mémoire est associée à une base de données, vous devez mettre celle-ci à jour avec les modifications apportées à la source de données. Pour plus d’informations sur la mise à jour d’une base de données, consultez Enregistrer des données dans la base de données et mettre à jour les données à l’aide d’un TableAdapter .

Pour mettre à jour la base de données

  1. Appelez la méthode EndEdit du BindingSource pour le contrôle.

    Le BindingSource est généré automatiquement quand vous ajoutez un contrôle lié aux données à un document ou à un classeur au moment du design. Le BindingSource connecte le contrôle au dataset typé dans votre projet. Pour plus d’informations, consultez la vue d’ensemble du composant BindingSource.

    L’exemple de code suivant part du principe que votre projet contient un BindingSource nommé customersBindingSource.

    this.customersBindingSource.EndEdit();
    
  2. Appelez la Update méthode du TableAdapter généré dans votre projet.

    TableAdapter est généré automatiquement lorsque vous ajoutez un contrôle lié aux données à un document ou un classeur au moment du design. TableAdapter connecte le jeu de données typé dans votre projet à la base de données. Pour plus d’informations, consultez la vue d’ensemble de TableAdapter.

    L’exemple de code suivant suppose que vous disposez d’une connexion à la table Customers dans la base de données Northwind et que votre projet contient un TableAdapter nommé customersTableAdapter et un jeu de données typé nommé northwindDataSet.

    this.customersTableAdapter.Update(this.northwindDataSet.Customers);