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

VB.net使用父子关系使用数据集填充TreeView,vb.net,treeview,dataset,Vb.net,Treeview,Dataset,我正在开发一个程序,它允许我在DataGridView中编辑XML数据。我几乎所有的东西都在工作,但我不喜欢我目前的树状结构 我将XML数据加载到一个数据集中,并在那里编辑它,因此我更愿意将我的TreeView建立在这个基础上。我试过一些方法,比如 Private Sub updateTree() 'Clear All Previous TreeView Nodes TreeView1.Nodes.Clear() 'Loop Through XML Nodes and A

我正在开发一个程序,它允许我在DataGridView中编辑XML数据。我几乎所有的东西都在工作,但我不喜欢我目前的树状结构

我将XML数据加载到一个数据集中,并在那里编辑它,因此我更愿意将我的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
我真正想要的是一个树视图,它显示嵌套的父子对象。我不确定在这种情况下如何做到这一点。。。有什么想法吗??我找到了这篇文章,但没有更多线索


谢谢。

我找到了一个有问题的方法来完成我想做的事情。我想,因为数据集包含父子关系,所以我可以用它们来构建我的树视图

数据集包括两个属性:父关系和子关系。我依靠这些来确定他们在关系树中的位置。使用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 
和往常一样,如果有人有更好的主意,我洗耳恭听:)

谢谢