你如何数据绑定到System.Windows.Forms.Treeview控件?

时间:2008-12-16 21:32:25

标签: .net winforms data-binding treeview

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

3 个答案:

答案 0 :(得分:8)

你是正确的,因为没有数据绑定。原因是TreeViews是分层数据结构。也就是说,不是直接列表。因此,数据绑定选项无效,表示列表结构。

可悲的是,它正在创建您自己的填充方法或购买第三方控件(最终将拥有自己的填充方法。)

这是关于Binding Hierarchical Data的一篇不错的MSDN文章。

答案 1 :(得分: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);
    }
}

答案 2 :(得分:2)

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