2011-09-25 91 views
1

我正在研究一個程序,允許我編輯DataGridView中的XML數據。我有大部分工作,但我不喜歡我目前的TreeView結構。VB.net使用父子關係填充TreeView與數據集

我將XML數據加載到DataSet中並在其中進行編輯,這就是我希望將我的TreeView放在上面的原因。我試過幾件東西,如..

Private Sub updateTree() 
    'Clear All Previous TreeView Nodes 
    TreeView1.Nodes.Clear() 
    'Loop Through XML Nodes and Add them to the Tree 
    For Each table As DataTable In ds.Tables 
     Dim node As New TreeNode(table.TableName) 
     If table.ChildRelations.Count = 0 Then 
      node.Text = table.TableName 
      node.Tag = table.TableName 
      TreeView1.Nodes.Add(node) 
     Else 
      node.Tag = table.TableName 
      node.Text = table.TableName & " - No Child Objects" 
      TreeView1.Nodes.Add(node) 
     End If 
    Next 
End Sub 

我真的很想有一個樹形視圖,顯示父子對象嵌套。我不確定在這種情況下如何完成這個任何想法?我發現這一點,文章,但沒有更多的線索......

Adding Nested Treeview Nodes in VB.NET?

感謝。

回答

1

我發現了一種有問題的方式來完成我正在嘗試做的事情。我想,因爲DataSet包含父子關係,所以我可以使用它們來構建我的樹視圖。

DataSet包含兩個屬性,父關係和子關係。我指望那些人來確定他們在關係樹中的位置。使用if語句,我首先填充父節點,因爲頂級父項沒有父項。然後,我檢查是否有父母的孩子,並填充這些孩子,最後,我使用計數器來填充孫子節點。

'Sub for calling a treeview update when needed 
Private Sub updateTree() 
    'Clear All Previous TreeView Nodes 
    TreeView1.Nodes.Clear() 
    'Loop Through the database examining the Parent child relationship and Add the nodes to the Tree 
    Dim i As Integer = 0 
    For Each table As DataTable In ds.Tables 
     Dim node As New TreeNode(table.TableName) 
     If table.ParentRelations.Count = 0 Then 
      node.Text = table.TableName & " -Parent" 
      node.Tag = table.TableName 
      TreeView1.Nodes.Add(node) 
     ElseIf table.ParentRelations.Count = 1 And table.ChildRelations.Count = 1 Then 
      node.Tag = table.TableName 
      node.Text = table.TableName & "-Child" 
      TreeView1.Nodes(0).Nodes.Add(node) 
     ElseIf table.ChildRelations.Count = 0 And table.ParentRelations.Count = 1 Then 
      node.Tag = table.TableName 
      node.Text = table.TableName & "-Grandchild" 
      TreeView1.Nodes(0).Nodes(i).Nodes.Add(node) 
      i += 1 
     End If 
    Next 

與往常一樣,如果任何人有一個更好的主意,我所有的耳朵:)

感謝....