VB.net使用父子关系填充TreeView与数据集

VB.net使用父子关系填充TreeView与数据集

问题描述:

我正在研究一个程序,允许我编辑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?

感谢。

我发现了一种有问题的方式来完成我正在尝试做的事情。我想,因为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 

与往常一样,如果任何人有一个更好的主意,我所有的耳朵:)

感谢....