ListObject (Control)

Actualización: Julio de 2008

Se aplica a

La información de este tema sólo se aplica a los proyectos de Visual Studio Tools para Office y versiones de Microsoft Office especificados.

Proyectos de nivel de documento

  • Excel 2007

  • Excel 2003

Proyectos de nivel de aplicación

  • Excel 2007

Para obtener más información, consulte Características disponibles por aplicación y tipo de proyecto.

El control ListObject es una lista que expone eventos y se puede enlazar a datos. Cuando se agrega una lista a una hoja de cálculo, Visual Studio Tools para Office crea un control ListObject que se puede programar directamente sin tener que pasar por el modelo de objetos de Microsoft Office Excel.

Crear el control

Puede agregar controles ListObject en tiempo de diseño o en tiempo de ejecución a una hoja de cálculo de Microsoft Office Excel en personalizaciones en el nivel del documento. A partir de Visual Studio 2008 Service Pack 1 (SP1), puede agregar controles ListObject a los complementos en el nivel de la aplicación en tiempo de ejecución. Para obtener más información, vea Cómo: Agregar controles ListObject a hojas de cálculo.

Nota:

De manera predeterminada, los objetos de lista creados de forma dinámica no se conservan en la hoja de cálculo como controles host cuando ésta se cierra. Para obtener más información, vea Agregar controles a documentos de Office en tiempo de ejecución.

Enlazar datos al control

Un control ListObject admite el enlace de datos simple y complejo. El control ListObject se puede enlazar a un origen de datos utilizando las propiedades DataSource y DataMember en tiempo de diseño o el método SetDataBinding en tiempo de ejecución.

Nota:

ListObject se actualiza automáticamente cuando se enlaza a un origen de datos, como DataTable, que provoca eventos cuando los datos cambian. Si se enlaza ListObject a un origen de datos que no provoca eventos cuando los datos cambian, se debe llamar al método RefreshDataRow o RefreshDataRows para actualizar ListObject.

Cuando se agrega ListObject a una celda de una hoja de cálculo asignando un elemento de esquema de repetición a esa celda, Visual Studio Tools para Office asigna automáticamente ListObject al conjunto de datos generado. Sin embargo, ListObject no se enlaza automáticamente a los datos. Es posible enlazar manualmente ListObject al conjunto de datos en tiempo de diseño o en tiempo de ejecución en un proyecto en el nivel del documento. A partir del SP1, es posible enlazar mediante programación el control ListObject al conjunto de datos en tiempo de ejecución en un complemento en el nivel de la aplicación.

Dado que los datos están separados del objeto ListObject, debe agregar y quitar los datos a través del conjunto de datos enlazado, y no directamente a través del control ListObject. Si los datos del conjunto de datos enlazado se actualizan mediante cualquier mecanismo, el control ListObject reflejará los cambios automáticamente. Para obtener más información, vea Enlazar datos a controles.

Se puede rellenar rápidamente un control ListObject enlazando ListObject a un origen de datos. Si se editan los datos en un ListObject enlazado a datos, los cambios también se realizarán automáticamente en el origen de datos. Si desea rellenar un ListObject y, a continuación, permitir que el usuario pueda cambiar los datos del ListObject sin modificar el origen de datos, puede usar el método Disconnect para desasociar el ListObject del origen de datos. Para obtener más información, consulte Cómo: Rellenar los controles ListObject con datos.

Nota:

No se admite el enlace de datos en controles ListObject solapados.

Mejorar el rendimiento en los controles ListObject

La lectura de un archivo XML en un control ListObject enlazado a datos tiende a ser más lenta si se enlaza primero el control y, a continuación, se llama a ReadXml para rellenar el conjunto de datos. Para mejorar el rendimiento, llame a ReadXml antes de enlazar el control.

Desconectar controles ListObject del origen de datos

Una vez rellenado un control ListObject con datos mediante el enlace con un origen de datos, es posible desconectarlo para que las modificaciones efectuadas en los datos del objeto de lista no afecten al origen de datos. Para obtener más información, vea Cómo: Rellenar los controles ListObject con datos.

Formato

El formato que puede aplicarse a Microsoft.Office.Interop.Excel.ListObject también puede aplicarse a un control Microsoft.Office.Tools.Excel.ListObject. Estas características de formato incluyen bordes, fuentes, formato de número y estilos. Los usuarios finales pueden reorganizar las columnas de un control ListObject enlazado a datos y estos cambios se conservarán con el documento, siempre que se agregara ListObject en tiempo de diseño al documento. La próxima vez que se abra el documento, el objeto de lista estará enlazado al mismo origen de datos, pero el orden de las columnas reflejará los cambios efectuados por los usuarios.

Agregar y quitar columnas en tiempo de ejecución

En tiempo de ejecución no puede agregar ni quitar manualmente columnas de un control ListObject enlazado a datos. Si un usuario final intenta eliminar una columna, ésta se restaurará inmediatamente y se quitarán las columnas agregadas. Por consiguiente, es importante escribir código para explicar a los usuarios por qué no pueden realizar estas acciones en un control ListObject enlazado a datos. Visual Studio Tools para Office proporciona varios eventos en el control ListObject relacionados con el enlace de datos. Por ejemplo, puede utilizar el evento OriginalDataRestored para advertir a los usuarios que no se pueden eliminar los datos que han intentado eliminar y que se han restaurado.

Agregar y quitar filas en tiempo de ejecución

Puede agregar manualmente y quitar filas de un control ListObject enlazado a datos, siempre que el origen de datos permita la adición de nuevas filas y no sea de sólo lectura. Puede escribir código para eventos como BeforeAddDataBoundRow para validar los datos o como ErrorAddDataBoundRow para reintentar la operación después de corregir el error.

Para obtener más información, vea Cómo: Validar datos cuando se agrega una fila nueva a un control ListObject y Cómo: Controlar errores cuando se agrega una fila nueva a un control ListObject.

Cambiar el nombre de controles ListObject en Excel 2007

Excel 2007 permite a los usuarios cambiar el nombre de las tablas Excel en tiempo de ejecución mediante la ficha Diseño. Sin embargo, el control ListObject no admite esta característica. Si un usuario intenta cambiar el nombre de una tabla de Excel que corresponde a ListObject, el nombre de la tabla de Excel se invertirá automáticamente al nombre original cuando se guarde el libro.

Nota:

Las listas de Excel se denominan tablas de Excel en Excel 2007.

Eventos

Los siguientes eventos están disponibles para el control ListObject:

Vea también

Tareas

Cómo: Agregar controles ListObject a hojas de cálculo

Cómo: Cambiar el tamaño de los controles ListObject

Cómo: Validar datos cuando se agrega una fila nueva a un control ListObject

Cómo: Controlar errores cuando se agrega una fila nueva a un control ListObject

Cómo: Asignar columnas ListObject a datos

Cómo: Rellenar los controles ListObject con datos

Ejemplo Excel Add-In Dynamic Controls

Cómo: Rellenar hojas de cálculo con datos de una base de datos

Conceptos

Comprender la persistencia del orden de filas y columnas ListObject

Enlazar datos a controles

Ampliar documentos de Word y libros de Excel en complementos en el nivel de la aplicación en tiempo de ejecución

Desarrollo de complementos de nivel de aplicación de Excel

Agregar controles a documentos de Office en tiempo de ejecución

Limitaciones de programación de elementos y controles Host

Otros recursos

Controles Host de Excel

Controles Host de Word

Controles en documentos de Office

Historial de cambios

Fecha

Historial

Motivo

Julio de 2008

Agregada información sobre el uso de controles de objetos de lista en complementos en el nivel de la aplicación.

Cambio de características de SP1.