Lier des données aux contrôles dans les solutions OfficeBind data to controls in Office solutions

Vous pouvez lier des contrôles Windows Forms et des contrôles hôtes dans un document Microsoft Office Word ou une feuille de calcul Microsoft Office Excel à une source de données pour que les contrôles affichent automatiquement les données.You can bind Windows Forms controls and host controls on a Microsoft Office Word document or Microsoft Office Excel worksheet to a data source so the controls automatically display the data. Vous pouvez lier des données à des contrôles dans des projets de niveau application et au niveau du document.You can bind data to controls in both application-level and document-level projects.

S’applique à : les informations contenues dans cette rubrique s’applique au document-projets et ajouter de VSTO de niveau-dans les projets.Applies to: The information in this topic applies to document-level projects and VSTO Add-in projects. Consultez fonctionnalités disponibles par type d’application et de projet Office.See Features available by Office application and project type.

Les contrôles hôtes étendent des objets qui se trouvent dans les modèles objet Word et Excel, tels que les contrôles de contenu dans Word et les plages nommées dans Excel.Host controls extend objects that are in the Word and Excel object models, such as content controls in Word and named ranges in Excel. Pour plus d’informations, consultez éléments hôtes et héberger de vue d’ensemble des contrôles.For more information, see Host items and host controls overview.

Les contrôles Windows Forms et les contrôles hôtes utilisent le modèle de liaison de données Windows Forms, qui prend en charge la liaison de données simple et la liaison de données complexe à des sources de données telles que les datasets et les tables de données.Both Windows Forms and host controls use the Windows Forms data binding model, which supports both simple data binding and complex data binding to data sources such as datasets and data tables. Pour obtenir des informations complètes sur le modèle de liaison de données dans les Windows Forms, consultez lier les données et les Windows Forms.For complete information about the data binding model in Windows Forms, see Data bind and Windows Forms.

lien vers la vidéo pour une démonstration vidéo connexe, consultez comment faire pour consommer des données de base de données dans Excel ?.link to video For a related video demonstration, see How do I: Consume database data in Excel?.

Liaison de données simpleSimple data binding

Il existe une liaison de données simple quand une propriété de contrôle est liée à un seul élément de données, tel qu’une valeur dans une table de données.Simple data binding exists when a control property is bound to a single data element, such as a value in a data table. Par exemple, le contrôle NamedRange a une propriété Value2 qui peut être liée à un champ dans un dataset.For example, the NamedRange control has a Value2 property that can be bound to a field in a dataset. Lorsque le champ dans le dataset change, la valeur dans la plage nommée change également.When the field in the dataset changes, the value in the named range also changes. Tous les contrôles hôtes, à l’exception du contrôle XMLNodes , prennent en charge la liaison de données simple.All host controls, except for the XMLNodes control, support simple data binding. Le contrôle XMLNodes étant une collection, il ne prend pas en charge la liaison de données.The XMLNodes control is a collection, and therefore it does not support data binding.

Pour effectuer la liaison de données simple à un contrôle hôte, ajoutez un Binding à la DataBindings propriété du contrôle.To perform simple data binding to a host control, add a Binding to the DataBindings property of the control. Un objet Binding représente la liaison simple entre une valeur de propriété du contrôle et la valeur d’un élément de données.A Binding object represents the simple binding between a property value of the control and the value of a data element.

L’exemple suivant montre comment lier la propriété Value2 à un élément de données dans un projet au niveau du document.The following example demonstrates how to bind the Value2 property to a data element in a document-level project.

Dim binding1 As New Binding("Value2", ds, "Customers.Names", True)
namedRange1.DataBindings.Add(binding1)
Binding binding1 = new Binding("Value2", ds, "Customers.Names", true);
namedRange1.DataBindings.Add(binding1);

Pour les procédures pas à pas qui montre la liaison de données simple, consultez procédure pas à pas : liaison de données Simple dans un projet au niveau du document pour un projet au niveau du document et procédure pas à pas : liaison de données Simple dans un projet de complément VSTO pour un projet de complément VSTO.For walkthroughs that demonstrates simple data binding, see Walkthrough: Simple data binding in a document-level project for a document-level project and Walkthrough: Simple data binding in VSTO Add-in project for a VSTO Add-in project.

Liaison de données complexeComplex data binding

Il existe une liaison de données complexe quand une propriété de contrôle est liée à plusieurs éléments de données, par exemple plusieurs colonnes dans une table de données.Complex data binding exists when a control property is bound to more than one data element, such as multiple columns in a data table. Le contrôle ListObject pour Excel est le seul contrôle hôte qui prend en charge la liaison de données complexe.The ListObject control for Excel is the only host control that supports complex data binding. Il existe également de nombreux contrôles Windows Forms qui prennent en charge la liaison de données complexe, tels que le contrôle DataGridView .There are also many Windows Forms controls that support complex data binding, such as the DataGridView control.

Pour effectuer la liaison de données complexe, définissez le DataSource propriété du contrôle à un objet de source de données qui est pris en charge par la liaison de données complexe.To perform complex data binding, set the DataSource property of the control to a data source object that is supported by complex data binding. Par exemple, la propriété DataSource du contrôle ListObject peut être liée à plusieurs colonnes dans une table de données.For example, the DataSource property of the ListObject control can be bound to multiple columns in a data table. Toutes les données de la table s’affichent dans le contrôle ListObject , et le ListObject change à mesure que les données de la table de données changent.All of the data in the data table appears in the ListObject control, and as the data in the data table changes, the ListObject also changes. Pour obtenir la liste des sources de données que vous pouvez utiliser pour la liaison de données complexe, consultez des sources de données prises en charge par les Windows Forms.For a list of the data sources that you can use for complex data binding, see Data sources supported by Windows Forms.

L’exemple de code suivant crée un DataSet avec deux objets DataTable et remplit l’une des tables avec des données.The following code example creates a DataSet with two DataTable objects and populates one of the tables with data. Le code lie ensuite le ListObject à la table qui contient des données.The code then binds the ListObject to the table that contains data. Cet exemple concerne un projet Excel au niveau du document.This example is for an Excel document-level project.

private void ListObject_DataSourceAndMember()
{
    // Create a DataSet and two DataTables.
    DataSet ordersDataSet = new DataSet("ordersDataSet");
    DataTable tableCustomers = new DataTable("Customers");
    DataTable tableProducts = new DataTable("Products");
    ordersDataSet.Tables.Add(tableCustomers);
    ordersDataSet.Tables.Add(tableProducts);

    // Add a data to the Customers DataTable.
    tableCustomers.Columns.Add(new DataColumn("LastName"));
    tableCustomers.Columns.Add(new DataColumn("FirstName"));
    DataRow dr = tableCustomers.NewRow();
    dr["LastName"] = "Chan";
    dr["FirstName"] = "Gareth";
    tableCustomers.Rows.Add(dr);

    // Create a list object.
    Microsoft.Office.Tools.Excel.ListObject list1 = 
        this.Controls.AddListObject(
        this.Range["A1"], "Customers");

    // Bind the list object to the Customers table.
    list1.AutoSetDataBoundColumnHeaders = true;
    list1.DataSource = ordersDataSet;
    list1.DataMember = "Customers";
}
Private Sub ListObject_DataSourceAndMember()
    ' Create a DataSet and two DataTables.
    Dim ordersDataSet As New DataSet("ordersDataSet")
    Dim tableCustomers As New DataTable("Customers")
    Dim tableProducts As New DataTable("Products")
    ordersDataSet.Tables.Add(tableCustomers)
    ordersDataSet.Tables.Add(tableProducts)

    ' Add a data to the Customers DataTable.
    tableCustomers.Columns.Add(New DataColumn("LastName"))
    tableCustomers.Columns.Add(New DataColumn("FirstName"))
    Dim dr As DataRow = tableCustomers.NewRow()
    dr("LastName") = "Chan"
    dr("FirstName") = "Gareth"
    tableCustomers.Rows.Add(dr)

    ' Create a list object.
    Dim List1 As Microsoft.Office.Tools.Excel.ListObject = _
        Me.Controls.AddListObject(Me.Range( _
        "A1"), "Customers")

    ' Bind the list object to the Customers table.
    List1.AutoSetDataBoundColumnHeaders = True
    List1.DataSource = ordersDataSet
    List1.DataMember = "Customers"

End Sub

Pour les procédures pas à pas qui illustrent la liaison de données complexes, consultez procédure pas à pas : liaison de données complexe dans un projet au niveau du document pour un projet au niveau du document et procédure pas à pas : liaison de données complexe dans un projet de complément VSTO pour un projet de complément VSTO.For walkthroughs that demonstrate complex data binding, see Walkthrough: Complex data binding in a document-level project for a document-level project and Walkthrough: Complex data binding in VSTO Add-in project for a VSTO Add-in project.

Afficher des données dans des documents et des classeursDisplay data in documents and workbooks

Dans les projets au niveau du document, vous pouvez utiliser la fenêtre Sources de données pour ajouter facilement des contrôles liés aux données à vos documents ou vos classeurs, comme vous le feriez pour des Windows Forms.In document-level projects, you can use the Data Sources window to add data-bound controls to your documents or workbooks easily, the same way you use it for Windows Forms. Pour plus d’informations sur l’utilisation de la des Sources de données fenêtre, consultez lier les formulaires Windows contrôle aux données dans Visual Studio et ajouter de nouvelles sources de données.For more information about using the Data Sources window, see Bind Windows Forms controls to data in Visual Studio and Add new data sources.

Faire glisser des contrôles à partir de la fenêtre Sources de donnéesDrag controls from the Data Sources window

Un contrôle est créé sur le document quand vous faites glisser un objet sur à partir de la fenêtre Sources de données .A control is created on the document when you drag an object onto it from the Data Sources window. Le type de contrôle créé varie selon que vous liez une ou plusieurs colonnes de données.The type of control that is created depends on whether you are binding a single column of data or multiple columns of data.

Pour Excel, un contrôle NamedRange est créé sur la feuille de calcul pour chaque champ, et un contrôle ListObject est créé pour chaque plage de données qui comprend plusieurs lignes et colonnes.For Excel, a NamedRange control is created on the worksheet for each individual field, and a ListObject control is created for each data range that includes multiple rows and columns. Vous pouvez modifier ce comportement par défaut en sélectionnant la table ou le champ dans la fenêtre Sources de données , puis en choisissant un autre contrôle dans la liste déroulante.You can change this default by selecting the table or field in the Data Sources window and then choosing a different control from the drop-down list.

Un contrôle ContentControl est ajouté aux documents.A ContentControl control is added to documents. Le type de contrôle de contenu dépend du type de données du champ sélectionné.The type of content control depends on the data type of the field that you selected.

Lier des données dans les projets au niveau du document au moment du designBind data in document-level projects at design time

Les rubriques suivantes présentent des exemples de liaison de données au moment du design :The following topics show examples of binding data at design time:

Lier des données dans les projets de complément VSTOBind data in VSTO Add-in projects

Dans les projets de complément VSTO, vous pouvez ajouter des contrôles uniquement lors de l’exécution.In VSTO Add-in projects, you can add controls only at runtime. Les rubriques suivantes présentent des exemples de liaison de données au moment de l’exécution :The following topics show examples of binding data at runtime:

Mettre à jour les données liées aux contrôles hôtesUpdate data that is bound to host controls

La liaison de données entre une source de données et un contrôle hôte implique une mise à jour de données bidirectionnelle.Data binding between a data source and a host control involves a two-way data update. Avec la liaison de données simple, les modifications de la source de données sont répercutées automatiquement dans le contrôle hôte, mais les modifications du contrôle hôte nécessitent un appel explicite pour mettre à jour la source de données.In simple data binding, changes in the data source are reflected automatically in the host control, but changes in the host control require an explicit call to update the data source. En effet, dans certains cas les modifications d’un champ lié aux données ne sont acceptées que si elles sont accompagnées de modifications dans un autre champ lié aux données.The reason is that in some cases, changes in one data-bound field are not accepted unless they are accompanied by changes in another data-bound field. Par exemple, vous pouvez avoir deux champs, un pour l’âge et un autre pour les années d’expérience.For example, you might have two fields, one for age and one for years of experience. L’expérience ne peut pas dépasser l’âge.Experience cannot exceed age. Un utilisateur ne peut pas mettre à jour l’âge de 50 à 25 puis l’expérience de 30 à 10 à moins d’apporter les modifications en même temps.A user cannot update the age from 50 to 25 and then the experience from 30 to 10 unless he or she makes the changes at the same time. Pour résoudre ce problème, les champs avec liaison de données simple ne sont mis à jour qu’une fois que les mises à jour ont été envoyées explicitement par le code.To solve this problem, fields with simple data binding are not updated until the updates are explicitly sent by code.

Pour mettre à jour une source de données à partir de contrôles hôtes qui autorisent la liaison de données simple, vous devez envoyer des mises à jour à la source de données en mémoire (comme un DataSet ou DataTable) et à la base de données principale, si votre solution en utilise une.To update a data source from host controls that enable simple data binding, you must send updates to the in-memory data source (such as a DataSet or DataTable) and to the back-end database, if your solution uses one.

Vous n’avez pas besoin de mettre à jour la source de données en mémoire de manière explicite quand vous effectuez une liaison de données complexe à l’aide du contrôle ListObject .You do not need to explicitly update the in-memory data source when you perform complex data binding using the ListObject control. Dans ce cas, les modifications sont envoyées automatiquement à la source de données en mémoire sans code supplémentaire.In that case, changes are automatically sent to the in-memory data source without additional code.

Pour plus d’informations, consultez Comment : mettre à jour une source de données avec des données à partir d’un contrôle hôte.For more information, see How to: Update a data source with data from a host control.

Voir aussiSee also

Comment faire pour consommer des données de base de données dans Excel ? How do I: Consume database data in Excel?
Liaison de données et Windows Forms Data binding and Windows Forms
Comment : créer un contrôle de liaison simple dans un formulaire Windows How to: Create a simple-bound control on a Windows Form
Lier des contrôles Windows Forms à des données dans Visual Studio Bind Windows Forms controls to data in Visual Studio
Enregistrer les données dans la base de données Save data back to the database
Mettre à jour des données à l’aide d’un TableAdapter Update data by using a TableAdapter
Données du cache Cache data
Données dans les solutions OfficeData in Office solutions