Tutorial: Enlace de datos complejos en el proyecto de complemento 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.

Se aplica a: la información de este tema se aplica a VSTO agregar-en los proyectos de 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 tipo de aplicación y el 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 ListObject control a una hoja de cálculo en tiempo de ejecución.Adding a ListObject control to a worksheet at runtime.

  • 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, consulte personalizar el IDE.For more information, see Personalize the IDE.

Requisitos previosPrerequisites

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

Crear un proyecto nuevoCreate 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 datosCreate 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 el orígenes de datos ventana no está visible, muéstrela; en la barra de menús, elija vista > Other Windows > 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 AdventureWorksLTDataSet.xsd archivo se agrega a el 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, consulte información general sobre TableAdapter.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 enlazar controles a datosCreate controls and bind 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 obtener más información acerca de los controles de enlace a datos, vea enlazar datos a controles en soluciones de Office.For more information about binding controls to data, see Bind 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, consulte documentos ampliar Word y libros de Excel en complementos VSTO en tiempo de ejecución.For more information, see Extend Word documents and Excel workbooks in VSTO Add-ins at runtime.

    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 complementoTest 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