2013-08-01 83 views
1

好吧,我有一個樹形視圖,我使用數據表從數據庫中獲取空間。該查詢工作並生成一個包含兩條記錄的數據表。我使用的字段內容:VB.NET Treeview

  1. sksorter \影像\非洲\ 9544 \高分辨率\
  2. sksorter \影像\非洲\ 9545 \高分辨率\

我試圖產生樹

sksorter

-images

--africa

--- 9544

----高分辨率

--- 9545

----高分辨率

它的工作原理,但它缺少最後的高分辨率節點...我很確定這是因爲我使用的方法在創建之前爲每個節點找到了一個,然後它會看到「高分辨率」存在並且不會創建它!

我在失去任何想法?謝謝!!

For Each dt As DataRow In dtData.Rows 
    'load the node we are as the base node?  
    Dim stTemp As String() 
    stTemp = dt.Item(0).ToString.Split("\") 
    Dim otest As String 

    For Each strNode As String In stTemp 
     If strNode <> String.Empty Then 
      'Index = Dir.LastIndexOf("\") 
      otest = String.Empty 
      otest += strNode + "\" 
      Dim nodes As TreeNode() = trvFolders.Nodes.Find(otest, True) 
      If nodes.Length = 0 Then 
       If basenode Is Nothing Then 
        basenode = trvFolders.Nodes.Add(otest, strNode) 
       Else 
        basenode = basenode.Nodes.Add(otest, strNode) 
       End If 
      Else 
       basenode = nodes(0) 
      End If 
     End If 
    Next 
Next 

回答

0

的問題是這一行:

Dim nodes As TreeNode() = trvFolders.Nodes.Find(otest, True) 

單詞「高分辨率」已經在節點樹,它的發現它的第2次和什麼也不做。

這是我返工你的代碼,這隻會從當前位置,而不是從一開始就搜索節點:

Dim parentNode As TreeNode = Nothing 
For Each strNode As String In stTemp 
    If strNode <> String.Empty Then 
    Dim otest As String = strNode + "\" 
    If parentNode Is Nothing Then 
     Dim nodes As TreeNode() = trvFolders.Nodes.Find(otest, False) 
     If nodes.Length = 0 Then 
     parentNode = trvFolders.Nodes.Add(otest, strNode) 
     Else 
     parentNode = nodes(0) 
     End If 
    Else 
     Dim nodes As TreeNode() = parentNode.Nodes.Find(otest, False) 
     If nodes.Length = 0 Then 
     parentNode = parentNode.Nodes.Add(otest, strNode) 
     Else 
     parentNode = nodes(0) 
     End If 
    End If 
    End If 
Next 
+0

謝謝!!多數民衆贊成我認爲只是沒有很多expereince列表視圖查找,並沒有想到你可以做一個特定的節點,而不是整個樹buyt當然,你可以...謝謝! –