Tutorial: enlace de datos complejos en el proyecto de complemento de VSTOWalkthrough: Complex Data Binding in VSTO add-in Project

Puede enlazar datos a controles host y controles de Windows Forms en proyectos de complemento de VSTO.You can bind data to host controls and Windows Forms controls in VSTO Add-in projects. En este tutorial se muestra cómo agregar controles a una hoja de cálculo de Microsoft Office Excel y enlazar los controles a datos en tiempo de ejecución.This walkthrough demonstrates how to add controls to a Microsoft Office Excel worksheet and bind the controls to data at run time.

Aplicación: la información de este tema se aplica a los proyectos de complemento de VSTO para Excel.Applies to: The information in this topic applies to VSTO add-in projects for Excel. Para obtener más información, consulte Características disponibles por aplicación y tipo de proyecto de Office.For more information, see Features Available by Office Application and Project Type.

En este tutorial se muestran las tareas siguientes:This walkthrough illustrates the following tasks:

  • Agregar un control ListObject a una hoja de cálculo en tiempo de ejecución.Adding a ListObject control to a worksheet at run time.

  • Crear un BindingSource que conecta el control a una instancia de un conjunto de datos.Creating a BindingSource that connects the control to an instance of a dataset.

    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.Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos.The Visual Studio edition that you have and the settings that you use determine these elements. Para obtener más información, vea Personalizar el IDE.For more information, see Personalizing the IDE.

Requisitos previosPrerequisites

Necesita los componentes siguientes para completar este tutorial:You need the following components to complete this walkthrough:

Crear un proyecto nuevoCreating a New Project

En primer lugar, es necesario crear un proyecto de complemento de VSTO para Excel.The first step is to create an Excel VSTO Add-in project.

Para crear un nuevo proyectoTo create a new project

  1. Cree un proyecto de complemento de VSTO para Excel con el nombre Rellenar hojas de cálculo de una base de datos, mediante Visual Basic o C#.Create an Excel VSTO Add-in project with the name Populating Worksheets from a Database, using either Visual Basic or C#.

    Para obtener más información, consulta How to: Create Office Projects in Visual Studio.For more information, see How to: Create Office Projects in Visual Studio.

    Visual Studio abre el archivo ThisAddIn.vb o ThisAddIn.cs y agrega el proyecto Rellenar hojas de cálculo de una base de datos al Explorador de soluciones.Visual Studio opens the ThisAddIn.vb or ThisAddIn.cs file and adds the Populating Worksheets from a Database project to Solution Explorer.

Crear un origen de datosCreating a Data Source

Use la ventana Orígenes de datos para agregar un conjunto de datos con tipo al proyecto.Use the Data Sources window to add a typed dataset to your project.

Para agregar un conjunto de datos con tipo al proyectoTo add a typed dataset to the project

  1. Si la ventana Orígenes de datos no es visible, muéstrela; para ello, en la barra de menús, elija Ver, Otras ventanas, Orígenes de datos.If the Data Sources window is not visible, display it by, on the menu bar, choosing View, Other Windows, Data Sources.

  2. Elija Agregar nuevo origen de datos para iniciar el Asistente para configuración de orígenes de datos.Choose Add New Data Source to start the Data Source Configuration Wizard.

  3. Haga clic en Base de datosy luego en Siguiente.Click Database, and then click Next.

  4. Si ya tiene una conexión a la base de datos AdventureWorksLT , elija esa conexión y haga clic en Siguiente.If you have an existing connection to the AdventureWorksLT database, choose this connection and click Next.

    De lo contrario, haga clic en Nueva conexióny use el cuadro de diálogo Agregar conexión para crear la nueva conexión.Otherwise, click New Connection, and use the Add Connection dialog box to create the new connection. Para obtener más información, consulte agregar nuevas conexiones.For more information, see Add new connections.

  5. En la página Guardar cadena de conexión en el archivo de configuración de la aplicación , haga clic en Siguiente.In the Save the Connection String to the Application Configuration File page, click Next.

  6. En la página Elegir los objetos de base de datos expanda Tablas y seleccione Dirección (SalesLT).In the Choose Your Database Objects page, expand Tables and select Address (SalesLT).

  7. Haga clic en Finalizar.Click Finish.

    El archivo AdventureWorksLTDataSet.xsd se agrega al Explorador de soluciones.The AdventureWorksLTDataSet.xsd file is added to Solution Explorer. Este archivo define los siguientes elementos:This file defines the following items:

    • Un conjunto de datos con tipo denominado AdventureWorksLTDataSet.A typed dataset named AdventureWorksLTDataSet. Este conjunto de datos representa el contenido de la tabla Dirección (SalesLT) de la base de datos AdventureWorksLT.This dataset represents the contents of the Address (SalesLT) table in the AdventureWorksLT database.

    • Un TableAdapter llamado AddressTableAdapter.A TableAdapter named AddressTableAdapter. Este TableAdapter puede usarse para leer y escribir datos el AdventureWorksLTDataSet.This TableAdapter can be used to read and write data in the AdventureWorksLTDataSet. Para obtener más información, consulta TableAdapter Overview.For more information, see TableAdapter Overview.

      Estos dos objetos se usarán más adelante en este tutorial.You will use both of these objects later in this walkthrough.

Crear controles y enlazarlos a datosCreating Controls and Binding Controls to Data

En este tutorial, el control ListObject muestra todos los datos en la tabla seleccionada en cuanto el usuario abre el libro.For this walkthrough, the ListObject control displays all the data in the table you selected as soon as the user opens the workbook. El objeto de lista usa BindingSource para conectar el control a la base de datos.The list object uses a BindingSource to connect the control to the database.

Para más información sobre el enlace de controles a datos, consulte Binding Data to Controls in Office Solutions.For more information about binding controls to data, see Binding Data to Controls in Office Solutions.

Para agregar el objeto de lista, el conjunto de datos y el adaptador de tablaTo add the list object, dataset, and table adapter

  1. En la clase ThisAddIn , declare los siguientes controles para mostrar la tabla Address del conjunto de datos AdventureWorksLTDataSet .In the ThisAddIn class, declare the following controls to display the Address table of the AdventureWorksLTDataSet dataset.

    private Microsoft.Office.Tools.Excel.ListObject addressListObject;
    private AdventureWorksLTDataSet adventureWorksDataSet;
    private AdventureWorksLTDataSetTableAdapters.AddressTableAdapter addressTableAdapter;
    private System.Windows.Forms.BindingSource addressBindingSource;
    
    Private addressListObject As Microsoft.Office.Tools.Excel.ListObject
    Private adventureWorksDataSet As AdventureWorksLTDataSet
    Private addressTableAdapter As AdventureWorksLTDataSetTableAdapters.AddressTableAdapter
    Private addressBindingSource As System.Windows.Forms.BindingSource
    
  2. En el método ThisAddIn_Startup , agregue el siguiente código para inicializar el conjunto de datos y rellenarlo con la información del conjunto de datos AdventureWorksLTDataSet .In the ThisAddIn_Startup method, add the following code to initialize the dataset and fill the dataset with information from the AdventureWorksLTDataSet dataset.

    this.addressTableAdapter = new AdventureWorksLTDataSetTableAdapters.AddressTableAdapter();
    this.adventureWorksDataSet = new AdventureWorksLTDataSet();
    this.addressTableAdapter.Fill(this.adventureWorksDataSet.Address);
    this.addressBindingSource = new System.Windows.Forms.BindingSource();
    
    Me.addressTableAdapter = New AdventureWorksLTDataSetTableAdapters.AddressTableAdapter()
    Me.adventureWorksDataSet = New AdventureWorksLTDataSet()
    Me.addressTableAdapter.Fill(Me.adventureWorksDataSet.Address)
    Me.addressBindingSource = New System.Windows.Forms.BindingSource()
    
  3. Agregue el código siguiente al método ThisAddIn_Startup .Add the following code to the ThisAddIn_Startup method. Esto genera un elemento host que extiende la hoja de cálculo.This generates a host item that extends the worksheet. Para obtener más información, consulta Extending Word Documents and Excel Workbooks in VSTO Add-ins at Run Time.For more information, see Extending Word Documents and Excel Workbooks in VSTO Add-ins at Run Time.

    Excel.Worksheet worksheet = (Excel.Worksheet)this.Application.ActiveWorkbook.Worksheets[1];
    // Create a workhseet host item.
    Worksheet extendedWorksheet = Globals.Factory.GetVstoObject(worksheet);
    
    
    
    Dim worksheet As Excel.Worksheet = DirectCast(Me.Application.ActiveWorkbook.Worksheets(1), Excel.Worksheet)
    
    ' Create a workhseet host item.
    Dim extendedWorksheet As Worksheet = Globals.Factory.GetVstoObject(worksheet)
    
    
  4. Cree un rango y agregue el control ListObject .Create a range and add the ListObject control.

    Excel.Range cell = extendedWorksheet.Range["$A$1:$G$5"];
    this.addressListObject = extendedWorksheet.Controls.AddListObject(cell, "list1");
    
    Dim cell As Excel.Range = extendedWorksheet.Range("$A$1:$G$5", System.Type.Missing)
    Me.addressListObject = extendedWorksheet.Controls.AddListObject(cell, "list1")
    
  5. Enlace el objeto de lista a AdventureWorksLTDataSet mediante BindingSource.Bind the list object to AdventureWorksLTDataSet by using the BindingSource. Pase los nombres de las columnas que desea enlazar al objeto de lista.Pass in the names of the columns you want to bind to the list object.

    this.addressBindingSource.DataSource = this.adventureWorksDataSet.Address;
    this.addressListObject.AutoSetDataBoundColumnHeaders = true;
    this.addressListObject.SetDataBinding(
        this.addressBindingSource, "", "AddressID", "AddressLine1", 
        "AddressLine2", "City", "StateProvince", "CountryRegion", "PostalCode");
    
    Me.addressBindingSource.DataSource = Me.adventureWorksDataSet.Address
    Me.addressListObject.AutoSetDataBoundColumnHeaders = True
    Me.addressListObject.SetDataBinding( _
        Me.addressBindingSource, "", "AddressID", "AddressLine1", _
        "AddressLine2", "City", "StateProvince", "CountryRegion", "PostalCode")
    

Probar el complementoTesting the Add-In

Al abrir Excel, el control ListObject muestra los datos de la tabla Address del conjunto de datos AdventureWorksLTDataSet .When you open Excel, the ListObject control displays the data from the Address table of the AdventureWorksLTDataSet dataset.

Para probar el complemento de VSTOTo test the VSTO Add-in

  • Presione F5.Press F5.

    Se creará un control ListObject denominado addressListObject en la hoja de cálculo.A ListObject control named addressListObject is created in the worksheet. Al mismo tiempo, se agregan al proyecto un objeto de conjunto de datos denominado adventureWorksLTDataSet y una BindingSource denominada addressBindingSource .At the same time, a dataset object named adventureWorksLTDataSet and a BindingSource named addressBindingSource are added to the project. El ListObject se enlaza a BindingSource, que a su vez se enlaza al objeto de conjunto de datos.The ListObject is bound to the BindingSource, which in turn is bound to the dataset object.

Vea tambiénSee Also

Datos en soluciones de Office Data in Office Solutions
Enlazar datos a controles en soluciones de Office Binding Data to Controls in Office Solutions
Cómo: Rellenar hojas de cálculo con datos de una base de datos How to: Populate Worksheets with Data from a Database
Cómo: rellenar documentos con datos de una base de datos How to: Populate Documents with Data from a Database
Cómo: rellenar documentos con datos de servicios How to: Populate Documents with Data from Services
Cómo: rellenar documentos con datos de objetos How to: Populate Documents with Data from Objects
Cómo: desplazarse por registros de base de datos en una hoja de cálculo How to: Scroll Through Database Records in a Worksheet
Cómo: actualizar un origen de datos con datos de un Control Host How to: Update a Data Source with Data from a Host Control
Tutorial: Enlace de datos Simple en un proyecto de nivel de documento Walkthrough: Simple Data Binding in a Document-Level Project
Tutorial: Enlace de datos complejo en un proyecto de nivel de documento Walkthrough: Complex Data Binding in a Document-Level Project
Uso de archivos de base de datos Local en información general sobre soluciones de Office Using Local Database Files in Office Solutions Overview
Agregar nuevos orígenes de datos Add new data sources
Enlazar controles de Windows Forms a datos en Visual Studio Bind Windows Forms controls to data in Visual Studio
Uso de archivos de base de datos Local en información general sobre soluciones de Office Using Local Database Files in Office Solutions Overview
Conectarse a datos en aplicaciones de Windows Forms Connecting to Data in Windows Forms Applications
Información general sobre el componente BindingSourceBindingSource Component Overview