Partager via


Procédure pas à pas : liaison à des données à partir d'un service dans un projet au niveau de l'application

Vous pouvez lier des données aux contrôles hôtes dans les projets au niveau de l'application. Cette procédure pas à pas montre comment ajouter des contrôles à un document Word Microsoft Office, les lier à des données extraites du MSDN Content Service et répondre aux événements au moment de l'exécution.

S'applique à : Les informations contenues dans cette rubrique s'appliquent aux projets de niveau application pour Word 2007 et Word 2010. Pour en savoir plus, consultez Fonctionnalités disponibles par type d'application et de projet Office.

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

Notes

Il est possible que votre ordinateur affiche des noms ou des emplacements différents pour certains des éléments d'interface utilisateur de Visual Studio 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 Paramètres Visual Studio.

Composants requis

Pour exécuter cette procédure pas à pas, vous devez disposer des composants suivants :

-

Une édition de Visual Studio 2010 qui inclut les outils de développement Microsoft Office. Pour plus d'informations, consultez [Configuration d'un ordinateur pour développer des solutions Office](bb398242\(v=vs.100\).md).
  • Microsoft Office Word 2007 ou Word 2010. 

Création d'un projet

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

Pour créer un projet

  • Créez un projet de complément Word 2007 portant le nom MTPS Content Service, à l'aide de Visual Basic ou C#.

    Pour plus d'informations, consultez Comment : créer des projets Office dans Visual Studio.

    Visual Studio ouvre le fichier ThisAddIn.vb ou ThisAddIn.cs et ajoute le projet à l'Explorateur de solutions.

Ajout d'un service Web

Pour cette procédure pas à pas, utilisez un service Web appelé MTPS Content Service. Ce service Web retourne des informations extraites d'un article MSDN spécifié sous la forme d'une chaîne XML ou de texte brut. Une étape ultérieure indique comment afficher les informations retournées dans un contrôle de contenu.

Pour ajouter le MTPS Content Service au projet

  1. Dans le menu Données, cliquez sur Ajouter une nouvelle source de données.

  2. Dans l' Assistant Configuration de source de données, cliquez sur Service, puis sur Suivant.

  3. Dans le champ Adresse, tapez l'URL suivante :

    http://services.msdn.microsoft.com/ContentServices/ContentService.asmx

  4. Cliquez sur OK.

  5. Dans le champ Espace de noms, tapez ContentService, et cliquez sur OK.

  6. Dans la boîte de dialogue Assistant Ajout de référence, cliquez sur Terminer.

Ajout d'un contrôle de contenu et liaison à des données au moment de l'exécution

Dans les projets au niveau de l'application, vous ajoutez et liez des contrôles au moment de l'exécution. Pour cette procédure pas à pas, configurez le contrôle de contenu afin que des données soient extraites du service Web lorsqu'un utilisateur clique à l'intérieur du contrôle.

Pour ajouter un contrôle de contenu et créer une liaison à des données

  1. Dans la classe ThisAddIn, déclarez les variables pour le projet MTPS Content Service, le contrôle de contenu et la liaison de données.

    Private request As ContentService.getContentRequest
    Private proxy As ContentService.ContentServicePortTypeClient
    Private document As ContentService.requestedDocument()
    Private response As ContentService.getContentResponse
    Private appId As ContentService.appId
    Private WithEvents richTextContentControl As Microsoft.Office.Tools.Word.RichTextContentControl
    Private components As System.ComponentModel.Container
    Private primaryDocumentsBindingSource As System.Windows.Forms.BindingSource
    
    private ContentService.getContentRequest request;
    private ContentService.ContentServicePortTypeClient proxy;
    private ContentService.requestedDocument[] document;
    private ContentService.getContentResponse response;
    private ContentService.appId appId;
    private Microsoft.Office.Tools.Word.RichTextContentControl richTextContentControl;
    private System.ComponentModel.Container components;
    private System.Windows.Forms.BindingSource primaryDocumentsBindingSource;
    
  2. Ajoutez la méthode suivante à la classe ThisAddIn. Cette méthode crée un contrôle de contenu au début du document actif.

    Private Sub AddRichTextControlAtRange()
    
        Dim currentDocument As Word.Document = Me.Application.ActiveDocument
        currentDocument.Paragraphs(1).Range.InsertParagraphBefore()
    
        ' Use the following line of code in projects that target the .NET Framework 4.
        Dim extendedDocument As Document = Globals.Factory.GetVstoObject(currentDocument)
    
        ' In projects that target the .NET Framework 3.5, use the following line of code instead.
        ' Dim extendedDocument As Document = currentDocument.GetVstoObject()
    
        richTextContentControl = extendedDocument.Controls.AddRichTextContentControl _
            (currentDocument.Paragraphs(1).Range, "richTextControl2")
        richTextContentControl.PlaceholderText = _
            "Click here to download MSDN Library information about content controls."
    End Sub
    
    private void AddRichTextControlAtRange()
    {
        Word.Document currentDocument = this.Application.ActiveDocument;
        currentDocument.Paragraphs[1].Range.InsertParagraphBefore();
    
        // Use the following line of code in projects that target the .NET Framework 4.
        Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument);
    
        // In projects that target the .NET Framework 3.5, use the following line of code instead.
        // Document extendedDocument = currentDocument.GetVstoObject();
    
        richTextContentControl = extendedDocument.Controls.AddRichTextContentControl(
            currentDocument.Paragraphs[1].Range, "richTextContentControl");
        richTextContentControl.PlaceholderText =
            "Click here to download MSDN Library information about content controls.";
    }
    
  3. Ajoutez la méthode suivante à la classe ThisAddIn. Cette méthode initialise les objets nécessaires pour créer et adresser une requête au service Web.

    Private Sub InitializeServiceObjects()
        request = New ContentService.getContentRequest()
        proxy = New ContentService.ContentServicePortTypeClient()
        document = New ContentService.requestedDocument(0) {}
        response = New ContentService.getContentResponse()
        appId = New ContentService.appId()
        components = New System.ComponentModel.Container()
        primaryDocumentsBindingSource = New System.Windows.Forms.BindingSource(components)
    End Sub
    
    private void InitializeServiceObjects()
    {
        request = new ContentService.getContentRequest();
        proxy = new ContentService.ContentServicePortTypeClient();
        document = new ContentService.requestedDocument[1];
        response = new ContentService.getContentResponse();
        appId = new ContentService.appId();
        components = new System.ComponentModel.Container();
        primaryDocumentsBindingSource = new System.Windows.Forms.BindingSource(this.components);
    }
    
  4. Créez un gestionnaire d'événements pour que le document MSDN Library consacré aux contrôles de contenu soit extrait lorsqu'un utilisateur clique dans le contrôle de contenu et pour lier les données au contrôle de contenu.

    Private Sub richTextContentControl_Entering _
        (ByVal sender As Object, ByVal e As ContentControlEnteringEventArgs) _
        Handles richTextContentControl.Entering
    
        document(0) = New ContentService.requestedDocument()
        With document(0)
            .type = ContentService.documentTypes.primary
            .selector = "Mtps.Xhtml"
        End With
    
        With request
            .contentIdentifier = "ed59e522-dd6e-4c82-8d49-f5dbcfcc950d"
            .locale = "en-us"
            .version = "VS.90"
            .requestedDocuments = document
        End With
    
        response = proxy.GetContent(appId, request)
    
        primaryDocumentsBindingSource.DataSource = _
            response.primaryDocuments(0).Any.InnerText
        richTextContentControl.DataBindings.Add("Text", _
            primaryDocumentsBindingSource.DataSource, "", True, _
            System.Windows.Forms.DataSourceUpdateMode.OnValidation)
    End Sub
    
    void richTextContentControl_Entering(object sender, ContentControlEnteringEventArgs e)
    {
        document[0] = new ContentService.requestedDocument();
        document[0].type = ContentService.documentTypes.primary;
        document[0].selector = "Mtps.Xhtml";
    
        request.contentIdentifier = "ed59e522-dd6e-4c82-8d49-f5dbcfcc950d";
        request.locale = "en-us";
        request.version = "VS.90";
        request.requestedDocuments = document;
    
        response = proxy.GetContent(appId, request);
        primaryDocumentsBindingSource.DataSource =
            response.primaryDocuments[0].Any.InnerText;
        richTextContentControl.DataBindings.Add("Text",
            primaryDocumentsBindingSource.DataSource, "", true,
            System.Windows.Forms.DataSourceUpdateMode.OnValidation);
    }
    
  5. Appelez les méthodes AddRichTextControlAtRange et InitializeServiceObjects à partir de la méthodeThisAddIn_Startup. Pour les programmeurs C#, ajoutez un gestionnaire d'événements.

    Private Sub ThisAddIn_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup
        AddRichTextControlAtRange()
        InitializeServiceObjects()
    End Sub
    
    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        AddRichTextControlAtRange();
        InitializeServiceObjects();
        this.richTextContentControl.Entering += richTextContentControl_Entering;
    }
    

Test du complément

Lorsque vous ouvrez Word, le contrôle RichTextContentControl apparaît. Le texte du contrôle change lorsque vous cliquez à l'intérieur.

Pour tester le complément

  1. Appuyez sur F5.

  2. Cliquez à l'intérieur du contrôle de contenu.

    Des informations sont téléchargées depuis le MTPS Content Service et affichées à l'intérieur du contrôle de contenu.

Voir aussi

Autres ressources

Liaison de données aux contrôles dans les solutions Office