Walkthrough: Binding to Data from a Service in an Application-Level Project

Updated: July 2008

Applies to

The information in this topic applies only to the specified Visual Studio Tools for Office projects and versions of Microsoft Office.

Project type

  • Application-level projects

Microsoft Office version

  • Word 2007

For more information, see Features Available by Application and Project Type.

Starting in Visual Studio 2008 Service Pack 1 (SP1), you can bind data to host controls in application-level projects. This walkthrough demonstrates how to add controls to a Microsoft Office Word document, bind the controls to data retrieved from the MTPS Content Service, and respond to events at run time.

This walkthrough illustrates the following tasks:

NoteNote:

Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. The Visual Studio edition that you have and the settings that you use determine these elements. For more information, see Visual Studio Settings.

You need the following components to complete this walkthrough:

  • Visual Studio Tools for Office (an optional component of Visual Studio 2008 Professional and Visual Studio Team System).

    Visual Studio Tools for Office is installed by default with the listed versions of Visual Studio. To check whether it is installed, see Installing Visual Studio Tools for Office.

  • Word 2007.

The first step is to create a Word add-in project.

To create a new project

  • Create a Word 2007 Add-in project with the name MTPS Content Service, using either Visual Basic or C#.

    For more information, see How to: Create Visual Studio Tools for Office Projects.

    Visual Studio opens the ThisAddIn.vb or ThisAddIn.cs file and adds the project to Solution Explorer.

For this walkthrough, use a Web service called the MTPS Content Service. This Web service returns information from a specified MSDN article in the form of an XML string or plain text. A later step shows how to display the returned information in a content control.

To add the MTPS Content Service to the project

  1. On the Data menu, click Add New Data Source.

  2. In the Data Source Configuration Wizard, click Service, and then click Next.

  3. In the Address field, type the following URL:

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

  4. Click Go.

  5. In the Namespace field, type ContentService, and click OK.

  6. In the Data Source Configuration Wizard dialog box, click Finish.

In application-level projects, you add and bind controls at run time. For this walkthrough, configure the content control to retrieve data from the Web service when a user clicks inside the control.

To add a content control and bind to data

  1. In the ThisAddIn class, declare the variables for the MTPS Content Service, the content control, and the data binding.

    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.Windows.Forms.BindingSource
        primaryDocumentsBindingSource;
    
  2. Add the following method to the ThisAddIn class. This method creates a content control at the beginning of the active document.

    private void AddRichTextControlAtRange()
    {
        Word.Document currentDocument = this.Application.ActiveDocument;
        currentDocument.Paragraphs[1].Range.InsertParagraphBefore();
    
        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. Add the following method to the ThisAddIn class. This method initializes the objects needed to create and send a request to the Web service.

    private void InitializeServiceObjects()
    {
        request = new ContentService.getContentRequest();
        proxy = new ContentService.ContentServicePortTypeClient();
        document = new ContentService.requestedDocument[1];
        response = new ContentService.getContentResponse();
        appId = new ContentService.appId();
        primaryDocumentsBindingSource =
            new System.Windows.Forms.BindingSource();
    
    }
    
  4. Create an event handler to retrieve the MSDN Library document about content controls when a user clicks inside of the content control and bind the data to the content control.

    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. Call the AddRichTextControlAtRange and InitializeServiceObjects methods from the ThisAddIn_Startup method. For C# programmers, add an event handler.

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        AddRichTextControlAtRange();
        InitializeServiceObjects();
        this.richTextContentControl.Entering +=
            new EventHandler<ContentControlEnteringEventArgs>
                (richTextContentControl_Entering);
    }
    

When you open Word, the RichTextContentControl control appears. The text in the control changes when you click inside it.

To test the add-in

  1. Press F5.

  2. Click inside of the content control.

    Information is downloaded from the MTPS Content Service and displayed inside the content control.

Date

History

Reason

July 2008

Added topic.

SP1 feature change.

Community Additions

ADD
Show: