2014-11-22 39 views
0

我有问题有关显示树树视图在VB.netVB.NET树状错误添加第二个孩子节点

这里的代码与循环

While Not mROC.EOF 
     tmpStr = "" 
     For i = 0 To UBound(sColumns) Step 3 
      If sColumns(2 + i) = "" Then 
       tmpStr = tmpStr & mROC(sColumns(i)).Value 
       tmpStr = tmpStr & " " 
      Else 
       tmpStr = tmpStr & Format(mROC(sColumns(i)).Value, sColumns(2 + i)) 
       tmpStr = tmpStr & " " 
      End If 
     Next 

     If mROC("parentCode").Value = "" Then 
      srcTv.Nodes.Add(mROC("code").Value & "A", tmpStr) 
     Else 
      Dim TNode() As TreeNode = srcTv.Nodes.Find(mROC("parentCode").Value & "A", True) 
      TNode(0).Nodes.Add(mROC("code").Value & "A", tmpStr) 
     End If 
     mROC.MoveNext() 
    End While 

srcTv是树形

审监委是数据库使用选择命令循环

tmpStr只是结合了数据库中的字段代码和说明,例如:“CT00001 Ari”

这里是数据库

code |description |parentCode 
----------------------------------- 
CT00001 |Ari   |KMD 
CT00002 |Angga   |KMD 
CT00003 |Bagus   |CT00001 
KMD  |Parent_A  | 
OLH  |Parent_B  |  

我想要的结果是

KMD Parent_A 
    -CT00001 Ari 
     -CT00003 Bagus 
    -CT00002 Angga 
OLH Parent_B 

我的代码工作正常时,父母只是有1个小孩,但错误时负荷的第二个孩子(CT00003巴古斯)。

请帮助我为这个项目和GBU的读者和回答我的问题。^_^

+1

将一个树形结构展平成一个dbase表是非常成问题的。无论是需要仔细排序表,所以你只有在子节点之前遇到父节点,或者你必须自己搜索父节点。你既没有做。 – 2014-11-22 11:40:17

+0

这是我第一次猜测,但他表示,一切都很好,直到他达到2级节点,只有这样才会发生的原因是他试图分配已使用的密钥 – 2014-11-23 12:15:40

回答

0

hmm,

你似乎得到重复的键。 试试这个:

 If mROC("parentCode").Value = "" Then 
      srcTv.Nodes.Add(mROC("code").Value & "A", tmpStr) 
     Else 
      Dim TNode() As TreeNode = srcTv.Nodes.Find(mROC("parentCode").Value & "A", True) 
      Dim sKey As String = mROC("code").Value 
      If srcTv.Nodes.Find(sKey & "A", True) Is Nothing Then 
       sKey &= "A" 
      Else 
       sKey &= "B" 
      End If 
      TNode(0).Nodes.Add(sKey, tmpStr) 
     End If** 
+0

感谢兄弟的回答 – Davis 2014-11-25 04:09:37