以编程方式在给定结构的运行时填充Treeview

时间:2014-03-19 11:39:00

标签: c# treeview dotnetbar

我正在开发一个小程序,它可以抓取一些数据并将它们显示在一个 Treeview或DotnetBars advTree控件。

在按钮单击事件中,将收集一些数据,(字符串)输出如下所示。 (树视图的结构)

myTree.add(1,-1,'','');
myTree.add(260, 1, 'All Releases', '');
myTree.add(6,260, 'Cat1', ''
myTree.add(7,6, '20.0.2'', ''
myTree.add(8,7, '20.0.21', '&some stuff'
myTree.add(9,7, '20.0.20a', '&some stuff'
myTree.add(10,7, '20.0.5', '&some stuff'
myTree.add(11,260, 'Cat2', ''
myTree.add(12,11, '12.2', ''
myTree.add(13,12, '12.2.77', '&some stuff'
myTree.add(14,12, '12.2.26', '&some stuff'

第一列包含Node-ID,第二列包含ID,它是来自的子节点。第三个包含节点文本,它应该显示在树视图中,最后一个用于以后的目的(值输出)。

结果:(树视图示例)

  • 所有版本
    • CAT1
      • 20.0.2
        • 20.0.21
        • 20.0.20a
        • 20.0.5
    • CAT2
      • 12.2
        • 77年2月12日
        • 26年2月12日

如何以编程方式添加Treeview项及其所有子项?

1 个答案:

答案 0 :(得分:1)

class MyTreeNode
{
    public String NodeTitle;
    public List<MyTreeNode> children;
}

我会将我想要的结构构建到一个对象中,然后递归搜索children属性以查看是否需要添加更多分支。

public AddBranch(MyTreeNode parentNode)
{
    MyTree.Add(parentNode.NodeTitle);

    foreach (var node in parentNode.children)
    {
        AddBranch(node);
    }
}

// Note this is a rough mock code just to give you an idea of what recursion is.