ListObject 控件

更新: 2008 年 7 月

适用于

本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。

文档级项目

  • Excel 2007

  • Excel 2003

应用程序级项目

  • Excel 2007

有关更多信息,请参见按应用程序和项目类型提供的功能

ListObject 控件是一个用于公开事件的列表,可绑定到数据。向工作表中添加列表时,Visual Studio Tools for Office 将创建一个 ListObject 控件,可以直接对此控件进行编程,而不必遍历 Microsoft Office Excel 对象模型。

创建控件

在文档级自定义项中,可以在设计时或运行时向 Microsoft Office Excel 工作表中添加 ListObject 控件。从 Visual Studio 2008 Service Pack 1 (SP1) 开始,可以在运行时向应用程序级外接程序中添加 ListObject 控件。有关更多信息,请参见如何:向工作表添加 ListObject 控件

说明:

默认情况下,关闭工作表时,动态创建的列表对象不会像宿主控件那样保留在工作表中。有关更多信息,请参见在运行时向 Office 文档添加控件

将数据绑定到控件

ListObject 控件支持简单数据绑定和复杂数据绑定。通过在设计时使用 DataSourceDataMember 属性或在运行时使用 SetDataBinding 方法,可将 ListObject 控件绑定到数据源。

说明:

ListObject 将在绑定到数据发生更改时会引发事件的数据源(如 DataTable)时自动更新。如果将 ListObject 绑定到数据发生更改时不会引发事件的数据源,则必须调用 RefreshDataRowRefreshDataRows 方法更新 ListObject

通过将重复的架构元素映射到工作表单元格的方式将 ListObject 添加到该单元格中时,Visual Studio Tools for Office 会将 ListObject 自动映射到生成的数据集。但是,ListObject 不会自动绑定到该数据。在文档级项目中,可以在设计时或运行时执行一些步骤来将 ListObject 绑定到数据集。从 SP1 开始,在应用程序级外接程序中,可以在运行时通过编程方式将 ListObject 绑定到数据集。

由于该数据与 ListObject 是分离的,因此应通过被绑定的数据集添加和移除数据,而不能直接通过 ListObject 进行此类操作。如果可以通过某种机制更新被绑定数据集内的数据,则 ListObject 控件会自动反映所做的更改。有关更多信息,请参见将数据绑定到控件

可以通过将 ListObject 绑定到数据源的方式快速填充 ListObject 控件。如果在数据绑定的 ListObject 中编辑数据,所做的更改将同时自动应用于数据源。如果要填充 ListObject,并使用户无需修改数据源即可更改 ListObject 中的数据,可使用 Disconnect 方法将 ListObject 从数据源中分离开来。有关更多信息,请参见如何:用数据填充 ListObject 控件

说明:

重叠的 ListObject 控件上不支持数据绑定。

改善 ListObject 控件的性能

如果先绑定 ListObject 控件,然后再调用 ReadXml 填充数据集,则会降低将 XML 文件读入到该数据绑定控件的速度。若要提高性能,请在绑定该控件之前调用 ReadXml

断开 ListObject 控件与数据源的连接

通过将 ListObject 控件绑定到数据源来为其填充数据之后,可以断开连接,这样对列表对象中的数据所做的修改将不会影响数据源。有关更多信息,请参见如何:用数据填充 ListObject 控件

格式设置

可应用于 Microsoft.Office.Interop.Excel.ListObject 的格式设置也可应用于 Microsoft.Office.Tools.Excel.ListObject 控件。这包括边框、字体、数字格式和样式。最终用户可以重新排列绑定了数据的 ListObject 中的列,并且如果在设计时已将 ListObject 添加到文档,则这些更改将保留在文档中。下次打开该文档时,此列表对象将绑定到相同的数据源,但列顺序将反映出用户所做的更改。

在运行时添加和移除列

在运行时不能手动添加或移除绑定了数据的 ListObject 控件中的列。如果最终用户尝试删除某列,则该列将立即还原,而添加的任何列也将被移除。因此,非常有必要编写代码以向用户说明为何不能在绑定到数据的 ListObject 上执行这些操作。Visual Studio Tools for Office 在 ListObject 上提供了与数据绑定相关的一些事件。例如,可以使用 OriginalDataRestored 事件警告用户不能删除其尝试删除的数据,而且该数据已还原。

在运行时添加和移除行

如果数据源允许添加新行并且数据源不是只读的,则可以手动添加和移除绑定了数据的 ListObject 控件中的行。可以针对事件编写代码,如针对 BeforeAddDataBoundRow 编写代码以对数据进行验证,或针对 ErrorAddDataBoundRow 编写代码以在错误得以修复后重试。

有关更多信息,请参见如何:在向 ListObject 控件添加新行时验证数据如何:向 ListObject 控件添加新行时处理错误

在 Excel 2007 中重命名 ListObject 控件

利用 Excel 2007,用户能够在运行时使用“设计”选项卡来更改 Excel 表的名称。但是,ListObject 控件不支持此功能。如果用户尝试重命名与 ListObject 相对应的 Excel 表,则 Excel 表的名称将自动在保存工作簿时恢复为原来的名称。

说明:

在 Excel 2007 中,Excel 列表被称为“Excel 表”。

事件

以下事件可用于 ListObject 控件:

请参见

任务

如何:向工作表添加 ListObject 控件

如何:调整 ListObject 控件的大小

如何:在向 ListObject 控件添加新行时验证数据

如何:向 ListObject 控件添加新行时处理错误

如何:将 ListObject 列映射到数据

如何:用数据填充 ListObject 控件

Excel 外接程序动态控件示例

如何:用数据库中的数据填充工作表

概念

了解 ListObject 列和行顺序持久性

将数据绑定到控件

在运行时在应用程序级外接程序中扩展 Word 文档和 Excel 工作簿

Excel 应用程序级外接程序开发

在运行时向 Office 文档添加控件

宿主项和宿主控件的编程限制

其他资源

Excel 宿主控件

Word 宿主控件

Office 文档上的控件

修订记录

日期

修订历史记录

原因

2008 年 7 月

增加了有关在应用程序级外接程序中使用列表对象控件的信息。

SP1 功能更改。