2013-03-22 75 views
1

我有TreeList顯示我的業務對象層次結構,它的所有部分都實現了IVirtualTreeListData。但是,在某些時候,我想進行更改:刪除一些數據,可能會添加一些數據或將葉移動到另一個包含節點。我可以對基礎業務對象進行更改,但顯示的樹不受影響。更改DevExpress TreeList底層IVirtualTreeList數據源的結構

我推測原因在於TreeList沿着IVirtualTreeListData的層次向下走(一次對應於第一次擴展節點),然後只是使用存儲在路上檢索到的節點中的數據。那麼,如何將數據源中的變化傳播到視圖中呢?

回答

1

要啓用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