TreeList 控件支持通过事件动态加载数据。 可以接管特定的事件来为 TreeList 控件动态提供数据,并按要求把最终用户作出的更改保存到单元格。

实现动态数据加载的基本步骤如下所示:

  1. 通过 TreeList.Columns 集合创建特定的列。

    这些列显示由事件提供的数据。

  2. TreeList.DataSource 属性设置为任一对象,除去实现 IList 或 IVirtualTreeListData interface 接口的对象以外。

    如果把 DataSource 属性设置为 IList 对象,则 TreeList 控件将切换到 绑定模式,并且从所指派的数据源中装载节点。

    如果把 DataSource 属性设置为实现了 IVirtualTreeListData 接口的对象,则 TreeList 控件将从该对象中取出数据。 请参阅 绑定业务对象 主题来学习更多内容。

  3. 接管 TreeList.VirtualTreeGetChildNodes 事件。

    此事件用于把对象列表提供到以节点表示的对象。 此事件在要求时动态发生。 例如,当节点被展开时,此事件发生。

    事件的 Node 参数标识必须通过事件取回的子节点的父对象。 要为当前父对象提供子对象,则把子对象列表指派到事件的 Children 参数。

    VirtualTreeGetChildNodes 事件也发生,以取回表示根节点的对象。 要识别这种情形,则检查 Node 参数。 它将引用指派到 TreeList.DataSource 属性的对象。

    将要创建的节点数目与指派到事件的 Children 参数的对象数目相匹配。 但是,在节点单元格中显示的数据通过 TreeList.VirtualTreeGetCellValue 事件提供。 请参阅下面的内容。

  4. 接管 TreeList.VirtualTreeGetCellValue 事件。

    使用此事件为节点单元格提供数据。 此事件为每个由 TreeList.VirtualTreeGetChildNodes 事件提供的节点对象动态发生,并为每个 TreeList 列动态发生。 可以使用事件的 Node 参数来识别下层对象,并在需要时取回所需的数据。 当前被处理的 TreeList 列由 Column 参数指定。 要提供数据,则把数据指派到事件的 CellData 参数。

  5. 如果需要响应最终用户对节点单元格的更改,并且保存数据,则接管 TreeList.VirtualTreeSetCellValue 事件。

    此事件提供了标识当前节点单元格的参数。 也包含了允许丢弃最终用户输入的取值的 Cancel 参数。

Expand image参阅