Tutorial: Enlace de datos simple en el proyecto de complemento de VSTO

Puede enlazar datos a controles host y controles de Windows Forms en proyectos de complemento de VSTO. En este tutorial se muestra cómo se agregan controles a un documento de Microsoft Office Word y cómo se enlazan los controles a datos en tiempo de ejecución.

Se aplica a: La información de este tema se aplica a los proyectos de complementos de VSTO para Word. Para obtener más información, consulte Características disponibles por aplicación de Office lication y tipo de proyecto.

En este tutorial se muestran las tareas siguientes:

  • Agregar un elemento ContentControl a un documento en tiempo de ejecución.

  • Crear un BindingSource que conecta el control a una instancia de un conjunto de datos.

  • Permitir al usuario que se desplace por los registros y visualizarlos en el control.

Nota:

Es posible que tu equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las siguientes instrucciones. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos. Para obtener más información, vea Personalizar el IDE.

Requisitos previos

Necesitará los componentes siguientes para completar este tutorial:

Creación de un nuevo proyecto

El primer paso es crear un proyecto de complemento de VSTO de Word.

Para crear un nuevo proyecto

  1. Cree un proyecto de complemento de VSTO para Word con el nombre Rellenar documentos desde una base de datos, mediante Visual Basic o C#.

    Para obtener más información, vea Cómo: Crear proyectos de Office en Visual Studio.

    Visual Studio abre el archivo ThisAddIn.vb o ThisAddIn.cs y agrega los documentos rellenados desde un proyecto de base de datos a Explorador de soluciones.

  2. Si el proyecto tiene como destino .NET Framework 4 o .NET Framework 4.5, agregue una referencia al ensamblado Microsoft.Office.Tools.Word.v4.0.Utilities.dll . Esta referencia es obligatoria para agregar mediante programación controles de Windows Forms al documento más adelante en este tutorial.

Creación de un origen de datos

Use la ventana Orígenes de datos para agregar un conjunto de datos con tipo al proyecto.

Para agregar un conjunto de datos con tipo al proyecto

  1. Si la ventana Orígenes de datos no está visible, la muestra, en la barra de menús, elija Ver>otros orígenes de datos de Windows.>

  2. Elija Agregar nuevo origen de datos para iniciar el Asistente para configuración de orígenes de datos.

  3. Haga clic en Base de datosy luego en Siguiente.

  4. Si ya tiene una conexión a la base de datos AdventureWorksLT , elija esa conexión y haga clic en Siguiente.

    De lo contrario, haga clic en Nueva conexióny use el cuadro de diálogo Agregar conexión para crear la nueva conexión. Para más información, consulte Adición de una nueva conexión.

  5. En la página Guardar cadena de conexión en el archivo de configuración de la aplicación , haga clic en Siguiente.

  6. En la página Elegir los objetos de base de datos expanda Tablas y seleccione Customer (SalesLT).

  7. Haga clic en Finalizar

    El archivo AdventureWorksLTDataSet.xsd se agrega a Explorador de soluciones. Este archivo define los siguientes elementos:

    • Un conjunto de datos con tipo denominado AdventureWorksLTDataSet. Este conjunto de datos representa el contenido de la tabla Customer (SalesLT) de la base de datos AdventureWorksLT.

    • TableAdapter denominado CustomerTableAdapter. TableAdapter se puede usar para leer y escribir datos en .AdventureWorksLTDataSet Para obtener más información, consulte Información general sobre TableAdapter.

      Estos dos objetos se usarán más adelante en este tutorial.

Creación de controles y controles de enlace a datos

La interfaz para ver los registros de base de datos en este tutorial es básica y se crea justo dentro del documento. Un elemento ContentControl muestra un registro único de la base de datos a la vez y dos controles Button le permiten desplazarse hacia delante y atrás por los registros. El control de contenido usa un elemento BindingSource para conectarse a la base de datos.

Para obtener más información sobre el enlace de controles a datos, vea Enlazar datos a controles en soluciones de Office.

Para crear la interfaz en el documento

  1. En la clase ThisAddIn , declare los siguientes controles para mostrar y desplazarse por la tabla Customer de la base de datos AdventureWorksLTDataSet .

    private AdventureWorksLTDataSet adventureWorksDataSet;
    private AdventureWorksLTDataSetTableAdapters.CustomerTableAdapter customerTableAdapter;
    private System.Windows.Forms.BindingSource customerBindingSource;
    private Microsoft.Office.Tools.Word.RichTextContentControl customerContentControl;
    private Microsoft.Office.Tools.Word.Controls.Button button1;
    private Microsoft.Office.Tools.Word.Controls.Button button2;
    
  2. En el método ThisAddIn_Startup , agregue el siguiente código para inicializar el conjunto de datos y rellenarlo con la información de la base de datos AdventureWorksLTDataSet .

    this.adventureWorksDataSet = new AdventureWorksLTDataSet();
    this.customerTableAdapter = new AdventureWorksLTDataSetTableAdapters.CustomerTableAdapter();
    this.customerTableAdapter.Fill(this.adventureWorksDataSet.Customer);
    this.customerBindingSource = new System.Windows.Forms.BindingSource();
    
  3. Agregue el siguiente código al método ThisAddIn_Startup. Esto genera un elemento host que extiende el documento. Para obtener más información, vea Extender documentos de Word y libros de Excel en complementos de VSTO en tiempo de ejecución.

    Word.Document currentDocument = this.Application.ActiveDocument;
    
    Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument);
    
  4. Defina varios intervalos al principio del documento. Estos intervalos identifican dónde se insertará texto y se colocarán los controles.

    extendedDocument.Paragraphs[1].Range.InsertParagraphBefore();
    extendedDocument.Paragraphs[1].Range.InsertParagraphBefore();
    extendedDocument.Paragraphs[1].Range.Text = 
        "The companies listed in the AdventureWorksLT database:   \n";
    extendedDocument.Paragraphs[2].Range.Text = "  "; 
    
    Word.Range range1 = extendedDocument.Paragraphs[2].Range.Characters.First;
    Word.Range range2 = extendedDocument.Paragraphs[2].Range.Characters.Last;
    Word.Range range3 = extendedDocument.Paragraphs[1].Range.Characters.Last;
    
  5. Agregue los controles de interfaz a los intervalos definidos previamente.

    this.button1 = extendedDocument.Controls.AddButton(range1, 60, 15, "1");
    this.button1.Text = "Previous";
    this.button2 = extendedDocument.Controls.AddButton(range2, 60, 15, "2");
    this.button2.Text = "Next";
    
    this.customerContentControl = extendedDocument.Controls.AddRichTextContentControl(
        range3, "richTextContentControl1");
    
  6. Enlace el control de contenido a AdventureWorksLTDataSet mediante el elemento BindingSource. Para los desarrolladores de C#, agregue dos controladores de eventos para los controles Button .

    this.customerBindingSource.DataSource = this.adventureWorksDataSet.Customer;
    this.customerContentControl.DataBindings.Add("Text", this.customerBindingSource, 
        "CompanyName", true, this.customerContentControl.DataBindings.DefaultDataSourceUpdateMode);
    
    this.button1.Click += new EventHandler(button1_Click);
    this.button2.Click += new EventHandler(button2_Click);
    
  7. Agregue el código siguiente para navegar por los registros de la base de datos.

    void button1_Click(object sender, EventArgs e)
    {
        this.customerBindingSource.MovePrevious();
    }
    
    void button2_Click(object sender, EventArgs e)
    {
        this.customerBindingSource.MoveNext();
    }
    

Probar el complemento

Cuando abre Word, el control de contenido muestra los datos del conjunto de datos AdventureWorksLTDataSet . Desplácese por los registros de la base de datos haciendo clic en los botones Siguiente y Anterior .

Para probar el complemento de VSTO

  1. Presione F5.

    Se crea un control de contenido denominado customerContentControl y se rellena con datos. Al mismo tiempo, se agregan al proyecto un objeto de conjunto de datos denominado adventureWorksLTDataSet y un elemento BindingSource con el nombre customerBindingSource . El elemento ContentControl se enlaza al elemento BindingSource, que a su vez se enlaza al objeto de conjunto de datos.

  2. Haga clic en los botones Siguiente y Anterior para desplazarse por los registros de la base de datos.