【问题标题】:How do you databind to a System.Windows.Forms.Treeview control?如何将数据绑定到 System.Windows.Forms.Treeview 控件?
【发布时间】:2010-09-27 05:36:30
【问题描述】:

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

【问题讨论】:

    标签: .net winforms data-binding treeview


    【解决方案1】:

    我使用 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】:

      您是正确的,因为没有数据绑定。原因是 TreeViews 是分层数据结构。也就是说,不是一个直接的列表。因此,databind 选项对于说 List 结构是无效的。

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-10-16
          • 2021-09-14
          • 1970-01-01
          • 2013-10-04
          • 1970-01-01
          • 2023-03-16
          • 1970-01-01
          相关资源
          最近更新 更多