2008-12-16 42 views
13

我在看这个控件,它似乎缺乏数据绑定的标准.net“datasource”和“datamember”属性。这个控件不可绑定吗?我可以编写一些自定义函数来填充给定数据源的树视图,我想,并且根据需要嵌入数据对象,但这是'最佳实践'吗?还是每个人都只是使用第三方树视图控件?如何绑定到System.Windows.Forms.Treeview控件?

回答

8

你是正确的,没有数据绑定。原因是TreeView是分层数据结构。那就是,不是一个清单。结果数据绑定选项对于说明一个List结构是无效的。

可悲的是它创建自己的填入方法或购买第三方控件(最终都会有自己填入方法。)

这里有Binding Hierarchical Data一个体面的MSDN文章。

2

如果只有几个级别,我喜欢用一些表填充一个数据集并在列上设置一个DataRelation。然后你使用一些嵌套循环并创建你的树节点。

5

我使用Developer's Express的树形控件。它将采取一张数据表并以分层方式显示/编辑它。它需要的只是表中的一个主键字段和一个父id字段,它可以确定哪里去了哪里。

如果您推出自己的代码并使用自己的类,则可以做同样的事情。

class Node 
    { 
    System.Collections.Generic.List<Node> _Children; 
    String Description; 

    void Node() 
    { 
     _Children = new System.Collections.Generic.List<Node>(); 
    } 

    public System.Collections.Generic.List<Node> Children() 
    { 
     return (_Children); 
    } 
    } 

    class Program 
    { 
    static void Main(string[] args) 
    { 
     System.Collections.Generic.List<Node> myTree = new System.Collections.Generic.List<Node>(); 
     Node firstNode = new Node(); 
     Node childNode = new Node(); 
     firstNode.Children().Add(childNode); 
    } 
    }