DevExpress TreeList DataSource不在UI上更新

时间:2013-11-29 19:21:57

标签: winforms devexpress xtratreelist treelist

我有一个位于PopupContainerControl内的TreeList。

根据使用表单的上下文动态填充TreeList。这意味着节点列表在运行时更新和修改。

我遇到的问题是TreeList只显示对节点结构的第一次修改,但不会显示对该节点结构的任何修改。

我正在使用实现IVirtualTreeListData的Custom Node类。如下所示。

public class Node<T> : TreeList.IVirtualTreeListData
{
    public Node<T> Parent { get; set; }
    public List<Node<T>> Children { get; set; }
    public object[] Cells { get; set; }
    public T Object { get; set; }

    public Node(T t, Node<T> parent, object[] cells)
    {
        Parent = parent;
        Children = new List<Node<T>>();
        Cells = cells;
        Object = t;

        if (this.Parent != null)
            this.Parent.Children.Add(this);
    }

    public Node(Node<T> parent, object[] cells)
    {
        Parent = parent;
        Children = new List<Node<T>>();
        Cells = cells;

        if (this.Parent != null)
            this.Parent.Children.Add(this);
    }

    public void VirtualTreeGetChildNodes(VirtualTreeGetChildNodesInfo info)
    {
        info.Children = Children;
    }

    public void VirtualTreeGetCellValue(VirtualTreeGetCellValueInfo info)
    {
        info.CellData = Cells[info.Column.AbsoluteIndex];
    }

    public void VirtualTreeSetCellValue(VirtualTreeSetCellValueInfo info)
    {
        Cells[info.Column.AbsoluteIndex] = info.NewCellData;
    }
}

所以当我第一次加载表单时,我会进行以下调用。

_rootNode = new Node<MyResource>(null,null)
_treeList.DataSource = _rootNode;

稍后,当资源加载到TreeList中时,它看起来如下所示:

Node<MyResource> newResourceNode = new Node<MyResource>(_rootNode,new object[]{"New Node"});
treeList.DataSource = _rootNode;
treeList.RefreshDataSource();
treeList.ExpandAll();

这将仅在第一次命中TreeList时设置TreeList中的资源,但不会反映任何后续更改。

0 个答案:

没有答案