2014-11-22 74 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