想根据datatable里数据作个treeview,table里的数据大体上是SN       level       Name
1          1         AAA
2          2         BBB
3          3         CCC
4          3         DDD
5          1         EEE
6          2         FFF
想要得treeview大体上是AAA
 |
 BBB
   |
   CCC
   DDD
EEE
  |
  FFF我看到design文件中的是从下先把子节点加入到父节点中,我现在想用循环一个个点分别加进去
这个做有个问题就是,我不知道有多少层,循环不知道要嵌多少层,我现在不知道怎么能在刚加入的节点上加入新的节点不知道有没有什么好方法比如            trvPart.Nodes.Add (new TreeNode("AAA"));这个到是加上了,不过问题出来了1。        如何把BBB加入到AAA下
2。        如何把CCC,DDD加入到BBB下

解决方案 »

  1.   

    你就可以获取level的级别了呀,那么遍历后,插入,有问题吗?
      

  2.   

    1、这个做有个问题就是,我不知道有多少层,循环不知道要嵌多少层,
    只要遍历表记录个数就可以了2、我现在不知道怎么能在刚加入的节点上加入新的节点不知道有没有什么好方法
    获取刚加入的节点,addnode加入子节点。3、如何把BBB加入到AAA下
    你是先加入AAA的,加入后,用变量记住,上次加入的节点名,例如AAA,然后找到它,添加子节点。
      

  3.   

    没找到可以用的方法
                trvPart.Nodes["AAA"].Nodes.Add(new TreeNode("BBB"));
    用这个怎么总是报错
      

  4.   


    Hi[code=C#]this.treeView1.Nodes.Add(string key,string text)
    这个Add方法有两个参数 key代表键 text 代表显示的文本 如果你要实现 trvPart.Nodes["AAA"].Nodes.Add(new TreeNode("BBB"));这个方法的话
    那么这里的"AAA"必须是父节点的Key 而你这里应该用的是text 所以会找不到父节点[/code]
      

  5.   


    终于知道空指针报错的症结了谢谢~~~改为
                trvPart.Nodes.Add("A01", "AAA");
                trvPart.Nodes.Add("A02", "BBB");
                trvPart.Nodes["A01"].Nodes.Add("A03","CCC");效果就出来了~~~看来是加入时没有指定key的原因~~