Procédure pas à pas : Lier des données aux contrôles dans un volet actions WordWalkthrough: Bind data to controls on a Word actions pane

Cette procédure pas à pas illustre la liaison de données aux contrôles dans un volet actions dans Word.This walkthrough demonstrates data binding to controls on an actions pane in Word. Les contrôles illustrent une relation Maître/Détail entre des tables dans une base de données SQL Server.The controls demonstrate a master/detail relation between tables in a SQL Server database.

S’applique à : Les informations contenues dans cette rubrique s’applique au document-le niveau de projets de Word.Applies to: The information in this topic applies to document-level projects for Word. Pour plus d’informations, consultez fonctionnalités disponibles par type d’application et de projet Office.For more information, see Features available by Office application and project type.

Cette procédure pas à pas décrit les tâches suivantes :This walkthrough illustrates the following tasks:

  • Création d’un volet actions avec des contrôles Windows Forms qui sont liés aux données.Creating an actions pane with Windows Forms controls that are bound to data.

  • À l’aide d’une relation maître/détail à afficher des données dans les contrôles.Using a master/detail relationship to display data in the controls.

  • Afficher le volet actions lorsque l’application s’ouvre.Show the actions pane when the application opens.

Note

Il est possible que pour certains des éléments de l’interface utilisateur de Visual Studio, votre ordinateur affiche des noms ou des emplacements différents de ceux indiqués dans les instructions suivantes.Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. L’édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments.The Visual Studio edition that you have and the settings that you use determine these elements. Pour plus d’informations, consultez Personnaliser l’IDE Visual Studio.For more information, see Personalize the Visual Studio IDE.

PrérequisPrerequisites

Pour exécuter cette procédure pas à pas, vous devez disposer des composants suivants :You need the following components to complete this walkthrough:

  • Une édition de Visual Studio qui inclut les outils de développement Microsoft Office.An edition of Visual Studio that includes the Microsoft Office developer tools. Pour plus d’informations, consultez configurer un ordinateur pour développer des solutions Office.For more information, see Configure a computer to develop Office solutions.

  • Word 2013Word 2013 ou Word 2010Word 2010.or Word 2010Word 2010.

  • Accès à un serveur avec la base de données Northwind SQL Server.Access to a server with the Northwind SQL Server sample database.

  • Autorisations pour lire et écrire dans la base de données SQL Server.Permissions to read from and write to the SQL Server database.

Créer le projetCreate the project

La première étape consiste à créer un projet de document Word.The first step is to create a Word Document project.

Pour créer un projetTo create a new project

  1. Créer un projet de Document Word portant le nom My Word Actions Pane.Create a Word Document project with the name My Word Actions Pane. Dans l’Assistant, sélectionnez créer un nouveau document.In the wizard, select Create a new document.

    Pour plus d'informations, voir Procédure : Créer des projets Office dans Visual Studio.For more information, see How to: Create Office projects in Visual Studio.

    Visual Studio ouvre le nouveau document Word dans le concepteur et ajoute le My Word Actions Pane projet l’Explorateur de solutions.Visual Studio opens the new Word document in the designer and adds the My Word Actions Pane project to Solution Explorer.

Ajouter des contrôles au volet actionsAdd controls to the actions pane

Pour cette procédure pas à pas, vous avez besoin d’un contrôle de volet actions qui contient des contrôles Windows Forms lié aux données.For this walkthrough, you need an actions pane control that contains data-bound Windows Forms controls. Ajouter une source de données au projet, puis faire glisser des contrôles à partir de la des Sources de données fenêtre au contrôle de volet actions.Add a data source to the project, and then drag controls from the Data Sources window to the actions pane control.

Pour ajouter un contrôle de volet actionsTo add an actions pane control

  1. Sélectionnez le My Word Actions Pane projet l’Explorateur de solutions.Select the My Word Actions Pane project in Solution Explorer.

  2. Dans le menu Projet , cliquez sur Ajouter un nouvel élément.On the Project menu, click Add New Item.

  3. Dans le ajouter un nouvel élément boîte de dialogue, sélectionnez contrôle de volet Actions, nommez-le ActionsControl, puis cliquez sur ajouter.In the Add New Item dialog box, select Actions Pane Control, name it ActionsControl, and then click Add.

Pour ajouter une source de données au projetTo add a data source to the project

  1. Si le des Sources de données fenêtre n’est pas visible, affichez-la en, sur la barre de menus, choisissez vue > Windows autres > Sources de données.If the Data Sources window is not visible, display it by, on the menu bar, choosing View > Other Windows > Data Sources.

    Note

    Si afficher les Sources de données n’est pas disponible, cliquez sur le document Word, puis vérifiez à nouveau.If Show Data Sources is not available, click the Word document and then check again.

  2. Cliquez sur ajouter une nouvelle Source de données pour démarrer le Assistant de Configuration de Source de données.Click Add New Data Source to start the Data Source Configuration Wizard.

  3. Sélectionnez base de données puis cliquez sur suivant.Select Database and then click Next.

  4. Sélectionnez une connexion de données à la base de données Northwind exemple SQL Server, ou ajouter une nouvelle connexion à l’aide de la nouvelle connexion bouton.Select a data connection to the Northwind sample SQL Server database, or add a new connection by using the New Connection button.

  5. Cliquez sur Suivant.Click Next.

  6. Désactivez l’option pour enregistrer la connexion si elle est sélectionnée, puis cliquez sur suivant.Clear the option to save the connection if it is selected, and then click Next.

  7. Développez le Tables nœud dans le objets de base de données fenêtre.Expand the Tables node in the Database objects window.

  8. Sélectionnez la case à cocher à côté du fournisseurs et produits tables.Select the check box next to the Suppliers and Products tables.

  9. Cliquez sur Terminer.Click Finish.

    L’Assistant ajoute les fournisseurs table et produits de la table vers le des Sources de données fenêtre.The wizard adds the Suppliers table and Products table to the Data Sources window. Il ajoute également un dataset typé à votre projet qui est visible dans l’Explorateur de solutions.It also adds a typed dataset to your project that is visible in Solution Explorer.

Pour ajouter des contrôles Windows Forms lié aux données à un contrôle de volet actionsTo add data-bound Windows Forms controls to an actions pane control

  1. Dans le des Sources de données fenêtre, développez le fournisseurs table.In the Data Sources window, expand the Suppliers table.

  2. Cliquez sur la flèche déroulante du nom de la société nœud, puis sélectionnez ComboBox.Click the drop-down arrow on the Company Name node, and select ComboBox.

  3. Faites glisser CompanyName à partir de la des Sources de données fenêtre au contrôle de volet actions.Drag CompanyName from the Data Sources window to the actions pane control.

    Un ComboBox contrôle est créé sur le contrôle de volet actions.A ComboBox control is created on the actions pane control. En même temps, un BindingSource nommé SuppliersBindingSource, un adaptateur de table et un DataSet sont ajoutés au projet dans la barre d’état du composant.At the same time, a BindingSource named SuppliersBindingSource, a table adapter, and a DataSet are added to the project in the component tray.

  4. Sélectionnez SuppliersBindingNavigator dans le composant barre d’état, puis appuyez sur supprimer.Select SuppliersBindingNavigator in the Component tray and press Delete. Vous n’allez pas utiliser le SuppliersBindingNavigator dans cette procédure pas à pas.You will not use the SuppliersBindingNavigator in this walkthrough.

    Note

    Suppression de la SuppliersBindingNavigator ne supprime pas tout le code qui a été généré pour lui.Deleting the SuppliersBindingNavigator does not remove all of the code that was generated for it. Vous pouvez supprimer ce code.You can remove this code.

  5. Déplacez la zone de liste déroulante afin qu’il soit sous l’étiquette et de modifier le taille propriété 171, 21.Move the combo box so that it is under the label and change the Size property to 171, 21.

  6. Dans le des Sources de données fenêtre, développez le produits de table qui est un enfant de la fournisseurs table.In the Data Sources window, expand the Products table that is a child of the Suppliers table.

  7. Cliquez sur la flèche déroulante du ProductName nœud, puis sélectionnez ListBox.Click the drop-down arrow on the ProductName node, and select ListBox.

  8. Faites glisser ProductName au contrôle de volet actions.Drag ProductName to the actions pane control.

    Un ListBox contrôle est créé sur le contrôle de volet actions.A ListBox control is created on the actions pane control. En même temps, un BindingSource nommé ProductBindingSource et un adaptateur de table sont ajoutés au projet dans la barre d’état du composant.At the same time, a BindingSource named ProductBindingSource and a table adapter are added to the project in the component tray.

  9. Déplacer la zone de liste afin qu’il soit sous l’étiquette et de modifier le taille propriété par 171,95.Move the list box so that it is under the label and change the Size property to 171,95.

  10. Faites glisser un Button à partir de la boîte à outils dans le volet actions contrôler et placez-le sous la zone de liste.Drag a Button from the Toolbox onto the actions pane control and place it below the list box.

  11. Cliquez sur le Button, cliquez sur propriétés dans le menu contextuel et modifiez les propriétés suivantes.Right-click the Button, click Properties on the shortcut menu, and change the following properties.

    PropriétéProperty ValueValue
    NameName InsertInsert
    TextText InsertInsert
  12. Redimensionner le contrôle utilisateur pour ajuster les contrôles.Resize the user control to fit the controls.

Configurer la source de donnéesSet up the data source

Pour configurer la source de données, ajoutez le code à la Load événement du contrôle de volet actions pour remplir le contrôle de données à partir de la DataTableet définissez le DataSource et DataMember propriétés pour chaque contrôle.To set up the data source, add code to the Load event of the actions pane control to fill the control with data from the DataTable, and set the DataSource and DataMember properties for each control.

Pour charger le contrôle de donnéesTo load the control with data

  1. Dans le Load Gestionnaire d’événements de la ActionsControl de classe, ajoutez le code suivant.In the Load event handler of the ActionsControl class, add the following code.

    Private Sub ActionsControl_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
        Handles Me.Load
    
        Me.SuppliersTableAdapter.Fill(Me.NorthwindDataSet.Suppliers)
        Me.ProductsTableAdapter.Fill(Me.NorthwindDataSet.Products)
    End Sub
    
    private void ActionsControl_Load(object sender, EventArgs e)
    {
        this.suppliersTableAdapter.Fill(this.northwindDataSet.Suppliers);
        this.productsTableAdapter.Fill(this.northwindDataSet.Products);
    }
    
  2. En c#, vous devez attacher le Gestionnaire d’événements pour le Load événement.In C#, you must attach the event handler to the Load event. Vous pouvez placer ce code dans le ActionsControl constructeur, après l’appel à InitializeComponent.You can place this code in the ActionsControl constructor, after the call to InitializeComponent. Pour plus d’informations sur la création de gestionnaires d’événements, consultez Comment : Créer des gestionnaires d’événements dans les projets Office.For more information about how to create event handlers, see How to: Create event handlers in Office projects.

    this.Load += new EventHandler(ActionsControl_Load);
    

Pour définir les propriétés de liaison de données des contrôlesTo set data binding properties of the controls

  1. Sélectionnez le contrôle CompanyNameComboBox.Select the CompanyNameComboBox control.

  2. Dans le propriétés fenêtre, cliquez sur le bouton à droite de la DataSource propriété, puis sélectionnez suppliersBindingSource.In the Properties window, click the button to the right of the DataSource property, and select suppliersBindingSource.

  3. Cliquez sur le bouton à droite de la DisplayMember propriété, puis sélectionnez CompanyName.Click the button to the right of the DisplayMember property, and select CompanyName.

  4. Développez le DataBindings propriété, cliquez sur le bouton à droite de la texte propriété, puis sélectionnez aucun.Expand the DataBindings property, click the button to the right of the Text property, and select None.

  5. Sélectionnez le contrôle ProductNameListBox.Select the ProductNameListBox control.

  6. Dans le propriétés fenêtre, cliquez sur le bouton à droite de la DataSource propriété, puis sélectionnez productsBindingSource.In the Properties window, click the button to the right of the DataSource property, and select productsBindingSource.

  7. Cliquez sur le bouton à droite de la DisplayMember propriété, puis sélectionnez ProductName.Click the button to the right of the DisplayMember property, and select ProductName.

  8. Développez le DataBindings propriété, cliquez sur le bouton à droite de la SelectedValue propriété, puis sélectionnez aucun.Expand the DataBindings property, click the button to the right of the SelectedValue property, and select None.

Ajoutez une méthode pour insérer des données dans une tableAdd a method to insert data into a table

La tâche suivante consiste à lire les données des contrôles dépendants et remplir une table dans votre document Word.The next task is to read the data from the bound controls and populate a table in your Word document. Tout d’abord, créez une procédure pour mettre en forme les en-têtes dans la table et puis ajoutez le AddData pour créer et mettre en forme un tableau Word.First, create a procedure for formatting the headings in the table, and then add the AddData method to create and format a Word table.

Pour mettre en forme les en-têtes des colonnesTo format the table headings

  1. Dans la ActionsControl classe, créez une méthode pour mettre en forme les en-têtes de la table.In the ActionsControl class, create a method to format the headings of the table.

    Shared Sub SetHeadings(ByVal tblCell As Word.Cell, ByVal text As String)
    
        With tblCell.Range
            .Text = text
            .Font.Bold = True
            .ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter
        End With
    End Sub
    
    static void SetHeadings(Microsoft.Office.Interop.Word.Cell tblCell, string text)
    {
        tblCell.Range.Text = text;
        tblCell.Range.Font.Bold = 1;
        tblCell.Range.ParagraphFormat.Alignment = 
            Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;
    }
    

Pour créer la tableTo create the table

  1. Dans le ActionsControl class, écrivez une méthode qui crée une table s’il n’existe pas déjà et ajouter des données dans le volet actions à la table.In the ActionsControl class, write a method that will create a table if one does not already exist, and add data from the actions pane to the table.

    Private Sub AddData(ByVal row As System.Data.DataRow, ByVal companyName As String)
    
        ' Create a table if it doesn't already exist.
        If Globals.ThisDocument.Tables.Count = 0 Then
    
            Try
                ' Create a table. 
                Dim tbl As Word.Table = Globals.ThisDocument.Tables.Add( _
                    Globals.ThisDocument.Application.Selection.Range, 1, 4)
    
                ' Insert headings.
                SetHeadings(tbl.Cell(1, 1), "Company Name")
                SetHeadings(tbl.Cell(1, 2), "Product Name")
                SetHeadings(tbl.Cell(1, 3), "Quantity")
                SetHeadings(tbl.Cell(1, 4), "Unit Price")
    
            Catch ex As Exception
                MessageBox.Show("Problem creating Products table: " & ex.Message, _
                    "Actions Pane", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
        End If
    
        ' Add data from data row to the table.
        Dim selection As Word.Selection = Globals.ThisDocument.Application.Selection
    
        If selection.Tables.Count > 0 Then
    
            Dim newRow As Word.Row = Globals.ThisDocument.Tables(1).Rows.Add()
            With newRow
                .Range.Font.Bold = False
                .Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft
                .Cells(4).Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight
                .Cells(1).Range.Text = companyName
                .Cells(2).Range.Text = row.Item("ProductName").ToString
                .Cells(3).Range.Text = row.Item("QuantityPerUnit").ToString
                .Cells(4).Range.Text = Math.Round(row.Item("UnitPrice"), 2)
            End With
    
        Else
            MessageBox.Show("Cursor must be within a table.", _
                "Actions Pane", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End If
    End Sub
    
    private void AddData(System.Data.DataRow row, string companyName)
    {
        object missing = System.Type.Missing;
    
        // Create a table if it doesn't already exist.
        if (Globals.ThisDocument.Tables.Count == 0)
        {
            try
            {
                // Create a table.
                Microsoft.Office.Interop.Word.Table tbl = Globals.ThisDocument.Tables.Add
                    (Globals.ThisDocument.Application.Selection.Range, 1, 4, ref missing, ref missing);
    
                // Insert headings.
                SetHeadings(tbl.Cell(1, 1), "Company Name");
                SetHeadings(tbl.Cell(1, 2), "Product Name");
                SetHeadings(tbl.Cell(1, 3), "Quantity");
                SetHeadings(tbl.Cell(1, 4), "Unit Price");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Problem creating Products table: " + ex.Message, 
                    "Actions Pane", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    
        // Add data from data row to the table.
        Microsoft.Office.Interop.Word.Selection selection = Globals.ThisDocument.Application.Selection;
    
        if (selection.Tables.Count > 0)
        {
            Microsoft.Office.Interop.Word.Row newRow = Globals.ThisDocument.Tables[1].Rows.Add(ref missing);
    
            newRow.Range.Font.Bold = 0;
    
            newRow.Range.ParagraphFormat.Alignment = 
                Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphLeft;
    
            newRow.Cells[4].Range.ParagraphFormat.Alignment =
                Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight;
    
            newRow.Cells[1].Range.Text = companyName;
            newRow.Cells[2].Range.Text = row["ProductName"].ToString();
            newRow.Cells[3].Range.Text = row["QuantityPerUnit"].ToString();
            newRow.Cells[4].Range.Text = Math.Round(Convert.ToDouble(row["UnitPrice"])).ToString("#,##0.00");
        }
        else
        {
            MessageBox.Show("Cursor must be within a table.", 
                "Actions Pane", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
    

Pour insérer du texte dans un tableau WordTo insert text into a Word table

  1. Ajoutez le code suivant à la Click Gestionnaire d’événements de la insérer bouton.Add the following code to the Click event handler of the Insert button.

    Private Sub Insert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Insert.Click
    
        Dim tbl As System.Data.DataTable = NorthwindDataSet.Products
        Dim rows() As System.Data.DataRow
    
        ' Check if a product is selected.
        If Not Me.ProductNameListBox.SelectedIndex < 0 Then
    
            Dim product As String = Me.ProductNameListBox.SelectedItem.Row.Item("ProductName")
            Dim company As String = Me.CompanyNameComboBox.Text
    
            ' Return the data row from the selected Product in the list box.
            rows = tbl.Select("[ProductName] = '" & product.Replace("'", "''") & "'")
    
            AddData(rows(0), company)
    
        Else
            MessageBox.Show("Please select a product.", "Actions Pane", MessageBoxButtons.OK)
        End If
    End Sub
    
    private void Insert_Click(object sender, System.EventArgs e)
    {
        System.Data.DataTable tbl = northwindDataSet.Products;
        System.Data.DataRow[] rows;
    
        // Check if a product is selected.
        if (this.productNameListBox.SelectedIndex >= 0)
        {
            System.Data.DataRowView productRow = (System.Data.DataRowView)this.productNameListBox.SelectedItem;
    
            string product = productRow.Row["ProductName"].ToString();
            string company = this.companyNameComboBox.Text;
    
            // Return the data row from the selected product.
            rows = tbl.Select("[ProductName] = '" + product.Replace("'", "''") + "'");
    
            this.AddData(rows[0], company);
        }
        else
        {
            MessageBox.Show("Please select a product.", "Actions Pane", MessageBoxButtons.OK);
        }
    }
    
  2. En c#, vous devez créer un gestionnaire d’événements pour le Click événements du bouton.In C#, you must create an event handler for the Click event of the button. Vous pouvez placer ce code dans le Load Gestionnaire d’événements de la ActionsControl classe.You can place this code in the Load event handler of the ActionsControl class.

    this.Insert.Click += new EventHandler(Insert_Click);
    

Afficher le volet actionsShow the actions pane

Le volet actions devient visible une fois que les contrôles sont ajoutés à ce dernier.The actions pane becomes visible after controls are added to it.

Pour afficher le volet actionsTo show the actions pane

  1. Dans l’Explorateur de solutions, avec le bouton droit ThisDocument.vb ou ThisDocument.cs, puis cliquez sur afficher le Code dans le menu contextuel.In Solution Explorer, right-click ThisDocument.vb or ThisDocument.cs, and then click View Code on the shortcut menu.

  2. Créer une nouvelle instance du contrôle en haut de la ThisDocument classe afin qu’il ressemble à l’exemple suivant.Create a new instance of the control at the top of the ThisDocument class so that it looks like the following example.

    private ActionsControl actions = new ActionsControl();
    
    Dim actions As New ActionsControl
    
  3. Ajoutez le code pour le Startup Gestionnaire d’événements de ThisDocument afin qu’il ressemble à l’exemple suivant.Add code to the Startup event handler of ThisDocument so that it looks like the following example.

    this.ActionsPane.Controls.Add(actions);
    
    Me.ActionsPane.Controls.Add(actions)
    

Tester l’applicationTest the application

Vous pouvez maintenant tester votre document pour vérifier que le volet actions apparaît lorsque le document est ouvert.Now you can test your document to verify that the actions pane appears when the document is opened. Tester pour la relation maître/détail dans les contrôles du volet actions et assurez-vous que les données sont entrées dans un mot table lorsque la insérer bouton.Test for the master/detail relationship in the controls on the actions pane, and make sure that data is populated in a Word table when the Insert button is clicked.

Pour tester votre documentTo test your document

  1. Appuyez sur F5 pour exécuter votre projet.Press F5 to run your project.

  2. Vérifiez que le volet actions est visible.Confirm that the actions pane is visible.

  3. Sélectionnez une société dans la zone de liste déroulante et vérifiez que les éléments dans le produits zone de liste changent.Select a company in the combo box and verify that the items in the Products list box change.

  4. Sélectionnez un produit, cliquez sur insérer dans le volet actions et vérifiez que les détails du produit sont ajoutées à la table dans Word.Select a product, click Insert on the actions pane, and verify that the product details are added to the table in Word.

  5. Insérez des produits supplémentaires provenant de différentes sociétés.Insert additional products from various companies.

Étapes suivantesNext steps

Cette procédure pas à pas montre les principes fondamentaux de la liaison de données aux contrôles dans un volet actions dans Word.This walkthrough shows the basics of binding data to controls on an actions pane in Word. Voici quelques tâches susceptibles de venir après :Here are some tasks that might come next:

Voir aussiSee also