Share via


Procédure pas à pas : lier des données à des contrôles dans un volet Actions Word

Cette procédure pas à pas illustre la liaison de données aux contrôles dans un volet Actions dans Word. Les contrôles illustrent une relation Maître/Détail entre des tables dans une base de données SQL Server.

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

Cette procédure pas à pas décrit les tâches suivantes :

  • Création d’un volet Actions avec des contrôles Windows Forms liés aux données.

  • Utilisation d’une relation maître/détail pour afficher les données dans les contrôles.

  • Affichez le volet Actions lorsque l’application s’ouvre.

Remarque

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. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d’informations, consultez Personnaliser l’IDE Visual Studio.

Prérequis

Vous devez disposer des éléments suivants pour exécuter cette procédure pas à pas :

  • Une édition de Visual Studio qui inclut les outils de développement Microsoft Office. Pour plus d’informations, consultez Configurer un ordinateur pour développer des solutions Bureau.

  • Word 2013 ou Word 2010 .

  • Accès à un serveur avec l’exemple de base de données Northwind SQL Server.

  • Autorisations de lecture et d’écriture dans la base de données SQL Server.

Créer le projet

La première étape consiste à créer un projet de document Word.

Pour créer un projet

  1. Créez un projet de document Word avec le nom Mon volet Actions Word. Dans l’Assistant, sélectionnez Créer un document.

    Pour plus d’informations, consultez Guide pratique pour créer des projets Bureau dans Visual Studio.

    Visual Studio ouvre le nouveau document Word dans le concepteur et ajoute le projet Volet Actions My Word à Explorateur de solutions.

Ajouter des contrôles au volet Actions

Pour cette procédure pas à pas, vous avez besoin d’un contrôle du volet Actions qui contient des contrôles Windows Forms liés aux données. Ajoutez une source de données au projet, puis faites glisser des contrôles de la fenêtre Sources de données vers le contrôle du volet Actions.

Pour ajouter un contrôle du volet Actions

  1. Sélectionnez le projet Mon volet Actions Word dans Explorateur de solutions.

  2. Dans le menu Projet , cliquez sur Ajouter un nouvel élément.

  3. Dans la boîte de dialogue Ajouter un nouvel élément , sélectionnez Contrôle du volet Actions, nommez-le ActionsControl, puis cliquez sur Ajouter.

Pour ajouter une source de données au projet

  1. Si la fenêtre Sources de données n’est pas visible, affichez-la dans la barre de menus, en choisissant Afficher>d’autres sources de données Windows>.

    Remarque

    Si afficher les sources de données n’est pas disponible, cliquez sur le document Word, puis case activée à nouveau.

  2. Cliquez sur Ajouter une nouvelle source de données pour démarrer l’Assistant Configuration de la source de données.

  3. Sélectionnez Base de données , puis cliquez sur Suivant.

  4. Sélectionnez une connexion de données à l’exemple de base de données SQL Server Northwind ou ajoutez une nouvelle connexion à l’aide du bouton New Connecter ion.

  5. Sélectionnez Suivant.

  6. Désactivez l’option permettant d’enregistrer la connexion si elle est sélectionnée, puis cliquez sur Suivant.

  7. Développez le nœud Tables dans la fenêtre Objets de base de données.

  8. Sélectionnez la zone case activée en regard des tables Fournisseurs et Produits.

  9. Cliquez sur Terminer.

    L’Assistant ajoute la table Fournisseurs et la table Products à la fenêtre Sources de données. Il ajoute également un jeu de données typé à votre projet qui est visible dans Explorateur de solutions.

Pour ajouter des contrôles Windows Forms liés aux données à un contrôle du volet Actions

  1. Dans la fenêtre Sources de données, développez la table Fournisseurs .

  2. Cliquez sur la flèche déroulante sur le nœud Nom de la société, puis sélectionnez ComboBox.

  3. Faites glisser CompanyName de la fenêtre Sources de données vers le contrôle du volet Actions.

    Un ComboBox contrôle est créé dans le contrôle du volet Actions. En même temps, un BindingSource adaptateur de table nommé SuppliersBindingSourceet un DataSet est ajouté au projet dans la barre d’état du composant.

  4. Sélectionnez dans la barre d’état composant, puis appuyez SuppliersBindingNavigator sur Supprimer. Vous n’utiliserez pas cette SuppliersBindingNavigator procédure pas à pas.

    Remarque

    SuppliersBindingNavigator La suppression du code ne supprime pas tout le code qui a été généré pour celui-ci. Vous pouvez supprimer ce code.

  5. Déplacez la zone de liste modifiable afin qu’elle se trouve sous l’étiquette et remplacez la propriété Size par 171, 21.

  6. Dans la fenêtre Sources de données, développez la table Products qui est un enfant de la table Fournisseurs .

  7. Cliquez sur la flèche déroulante sur le nœud ProductName , puis sélectionnez ListBox.

  8. Faites glisser ProductName vers le contrôle du volet Actions.

    Un ListBox contrôle est créé dans le contrôle du volet Actions. En même temps, un BindingSource adaptateur nommé ProductBindingSource et un adaptateur de table sont ajoutés au projet dans la barre d’état des composants.

  9. Déplacez la zone de liste pour qu’elle se trouve sous l’étiquette et remplacez la propriété Size par 171 95.

  10. Faites glisser une Button boîte à outils vers le contrôle du volet Actions et placez-la sous la zone de liste.

  11. Cliquez avec le bouton droit sur les Buttonpropriétés, cliquez sur Propriétés dans le menu contextuel, puis modifiez les propriétés suivantes.

    Propriété Valeur
    Nom Insérer
    Texte Insérer
  12. Redimensionnez le contrôle utilisateur pour qu’il corresponde aux contrôles.

Configurer la source de données

Pour configurer la source de données, ajoutez du code à l’événement Load du contrôle du volet Actions pour remplir le contrôle avec les données du DataTablecontrôle, puis définissez les propriétés et DataMember les DataSource propriétés de chaque contrôle.

Pour charger le contrôle avec des données

  1. Dans le Load gestionnaire d’événements de la ActionsControl classe, ajoutez le code suivant.

    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 à l’événement Load . Vous pouvez placer ce code dans le ActionsControl constructeur, après l’appel à InitializeComponent. Pour plus d’informations sur la création de gestionnaires d’événements, consultez Guide pratique pour créer des gestionnaires d’événements dans des projets Bureau.

    this.Load += new EventHandler(ActionsControl_Load);
    

Pour définir les propriétés de liaison de données des contrôles

  1. Sélectionnez le contrôle CompanyNameComboBox.

  2. Dans la fenêtre Propriétés , cliquez sur le bouton à droite de la propriété DataSource , puis sélectionnez suppliersBindingSource.

  3. Cliquez sur le bouton à droite de la propriété DisplayMember , puis sélectionnez CompanyName.

  4. Développez la propriété DataBindings , cliquez sur le bouton à droite de la propriété Text , puis sélectionnez Aucun.

  5. Sélectionnez le contrôle ProductNameListBox.

  6. Dans la fenêtre Propriétés , cliquez sur le bouton à droite de la propriété DataSource , puis sélectionnez productsBindingSource.

  7. Cliquez sur le bouton à droite de la propriété DisplayMember , puis sélectionnez ProductName.

  8. Développez la propriété DataBindings , cliquez sur le bouton à droite de la propriété SelectedValue , puis sélectionnez Aucun.

Ajouter une méthode pour insérer des données dans une table

La tâche suivante consiste à lire les données des contrôles liés et à remplir un tableau dans votre document Word. Tout d’abord, créez une procédure pour mettre en forme les titres du tableau, puis ajoutez la AddData méthode pour créer et mettre en forme un tableau Word.

Pour mettre en forme les en-têtes de tableau

  1. Dans la ActionsControl classe, créez une méthode pour mettre en forme les en-têtes du tableau.

    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 table

  1. Dans la ActionsControl classe, écrivez une méthode qui crée une table si elle n’existe pas déjà et ajoutez des données du volet Actions à la table.

    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 Word

  1. Ajoutez le code suivant au Click gestionnaire d’événements du bouton Insérer .

    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 l’événement Click du bouton. Vous pouvez placer ce code dans le Load gestionnaire d’événements de la ActionsControl classe.

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

Afficher le volet Actions

Le volet Actions devient visible une fois les contrôles ajoutés.

Pour afficher le volet Actions

  1. Dans Explorateur de solutions, cliquez avec le bouton droit sur ThisDocument.vb ou ThisDocument.cs, puis cliquez sur Afficher le code dans le menu contextuel.

  2. Créez une instance du contrôle en haut de la ThisDocument classe afin qu’elle ressemble à l’exemple suivant.

    private ActionsControl actions = new ActionsControl();
    
  3. Ajoutez du Startup code au gestionnaire d’événements pour ThisDocument qu’il ressemble à l’exemple suivant.

    this.ActionsPane.Controls.Add(actions);
    

Test de l’application

Vous pouvez maintenant tester votre document pour vérifier que le volet Actions s’affiche lorsque le document est ouvert. Testez la relation maître/détail dans les contrôles du volet Actions et vérifiez que les données sont renseignées dans un tableau Word lorsque le bouton Insérer est cliqué.

Pour tester votre document

  1. Appuyez sur F5 pour exécuter votre projet.

  2. Vérifiez que le volet Actions est visible.

  3. Sélectionnez une entreprise dans la zone de liste modifiable et vérifiez que les éléments de la zone de liste Produits changent.

  4. Sélectionnez un produit, cliquez sur Insérer dans le volet Actions et vérifiez que les détails du produit sont ajoutés au tableau dans Word.

  5. Insérez des produits supplémentaires de différentes entreprises.

Étapes suivantes

Cette procédure pas à pas montre les principes de base de la liaison de données aux contrôles dans un volet Actions dans Word. Voici quelques tâches susceptibles de venir après :