更改DevExpress TreeList底层IVirtualTreeList数据源的结构

更改DevExpress TreeList底层IVirtualTreeList数据源的结构

问题描述:

我有TreeList显示我的业务对象层次结构,它的所有部分都实现了IVirtualTreeListData。但是,在某些时候,我想进行更改:删除一些数据,可能会添加一些数据或将叶移动到另一个包含节点。我可以对基础业务对象进行更改,但显示的树不受影响。更改DevExpress TreeList底层IVirtualTreeList数据源的结构

我推测原因在于TreeList沿着IVirtualTreeListData的层次向下走(一次对应于第一次扩展节点),然后只是使用存储在路上检索到的节点中的数据。那么,如何将数据源中的变化传播到视图中呢?

要启用XtraTreeList节点层次结构与基础业务对象的自动同步,请实现一个IBindingList接口,用于收集您作为VirtualTreeGetChildNodesInfo.Children属性提供的子对象集合。
完成此任务的最简单方法是在BusinessObject中创建一个BindingList<YourBusinessObject>()实例,以存储所有子对象,并将其分配给IVirtualTreeListData.VirtualTreeGetChildNodes()方法实现中的info.Children属性。 在这种情况下,当您的对象被更改或删除时,TreeList将自动刷新相应的节点。

+0

重申:BindingList是否会自动检测其包含成员的属性更改? – Srv19 2013-03-22 20:36:19

+0

@ Srv19:是的,但是您必须在业务对象上实现INotifyPropertyChanged才能工作。 – 2015-02-02 22:48:11