TreeList 控件支持通过事件动态加载数据。 可以接管特定的事件来为 TreeList 控件动态提供数据,并按要求把最终用户作出的更改保存到单元格。
实现动态数据加载的基本步骤如下所示:
- 通过 TreeList.Columns 集合创建特定的列。
这些列显示由事件提供的数据。
- 把 TreeList.DataSource 属性设置为任一对象,除去实现 IList 或 IVirtualTreeListData interface 接口的对象以外。
如果把 DataSource 属性设置为 IList 对象,则 TreeList 控件将切换到 绑定模式,并且从所指派的数据源中装载节点。
如果把 DataSource 属性设置为实现了 IVirtualTreeListData 接口的对象,则 TreeList 控件将从该对象中取出数据。 请参阅 绑定业务对象 主题来学习更多内容。
- 接管 TreeList.VirtualTreeGetChildNodes 事件。
此事件用于把对象列表提供到以节点表示的对象。 此事件在要求时动态发生。 例如,当节点被展开时,此事件发生。
事件的 Node 参数标识必须通过事件取回的子节点的父对象。 要为当前父对象提供子对象,则把子对象列表指派到事件的 Children 参数。
VirtualTreeGetChildNodes 事件也发生,以取回表示根节点的对象。 要识别这种情形,则检查 Node 参数。 它将引用指派到 TreeList.DataSource 属性的对象。
将要创建的节点数目与指派到事件的 Children 参数的对象数目相匹配。 但是,在节点单元格中显示的数据通过 TreeList.VirtualTreeGetCellValue 事件提供。 请参阅下面的内容。
- 接管 TreeList.VirtualTreeGetCellValue 事件。
使用此事件为节点单元格提供数据。 此事件为每个由 TreeList.VirtualTreeGetChildNodes 事件提供的节点对象动态发生,并为每个 TreeList 列动态发生。 可以使用事件的 Node 参数来识别下层对象,并在需要时取回所需的数据。 当前被处理的 TreeList 列由 Column 参数指定。 要提供数据,则把数据指派到事件的 CellData 参数。
- 如果需要响应最终用户对节点单元格的更改,并且保存数据,则接管 TreeList.VirtualTreeSetCellValue 事件。
此事件提供了标识当前节点单元格的参数。 也包含了允许丢弃最终用户输入的取值的 Cancel 参数。