将Treeview子节点连接到数据库详细信息

时间:2014-09-04 08:30:04

标签: vb.net winforms treeview

我正在使用VB.net 2010&有一个Treeview,它通过Form1_Load中的数据集从MySQL表中填充。

树视图从数据库表中加载测试数据很好,但我希望能够单击树视图子节点&在多个文本框中显示来自MySQL表行的匹配数据。

我知道我需要为一行中的每个表Cell提供一个文本框,但我无法弄清楚如何将表Row ID列连接到treeview(子节点)。我的表ID列在下面的屏幕截图中命名为UserID。

我也知道我需要在TreeView1_AfterSelect中添加代码。我想我可以使用treeview节点Tag连接到表UserID列,但我只是不确定代码。

我的treeview根节点在设计视图中设置。

我只有一个Binding Navigator&在测试treeview / table-details时,Form上的Datagrid将最终从Form中删除。

以下是关于我如何从MySQL表中loading the treeview with my test data的背景知识。

以下是我的表格数据的一些截图。在VB.NET表格中,这个网站不会让我发布图片。

我一直试图让这个工作至少一个星期没有运气。非常感谢任何帮助。

Private Sub AddNode(parentNode As String, nodeText As String)
    Dim node As New List(Of TreeNode)
    node.AddRange(TreeView1.Nodes.Find(parentNode, True))
    If Not node.Any Then
      '' '' ''This is the Parent Treeview Node
      node.Add(TreeView1.Nodes(0).Nodes.Add(parentNode, parentNode))
    End If
    '' '' ''This is the Child Treeview Node
    node.Add(TreeView1.Nodes(0).Nodes(parentNode).Nodes.Add(nodeText, nodeText))
End Sub

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load       
   'TODO: This line of code loads data into the 'Database1DataSet.Table44' table. You can move, or remove it, as needed.
    Me.Table44TableAdapter.Fill(Me.Database1DataSet.Table44)
    For Each dr As DataRow In Database1DataSet.Table44.Rows
      AddNode(dr("ParentNode").ToString, dr("ChildNode").ToString)
    Next
    TreeView1.ExpandAll()
End Sub

1 个答案:

答案 0 :(得分:0)

您的数据库结构对我来说没有意义。每个州可以有多个城市吗?或者它总是一个用户和一个城市。目前尚不清楚。

无论如何,您可以使用节点的Key参数来设置Name属性,并查看您点击的内容:

Private Sub AddNode(parentNode As String, nodeText As String, userID As String)
  Dim node As New List(Of TreeNode)
  node.AddRange(TreeView1.Nodes.Find(parentNode, True))
  If Not node.Any Then
    node.Add(TreeView1.Nodes(0).Nodes.Add(parentNode, parentNode))
  End If
  node.Add(TreeView1.Nodes(0).Nodes(parentNode).Nodes.Add(userID, nodeText))
End Sub

然后在AfterSelect事件中,查看您的密钥是否为数字:

Private Sub TreeView1_AfterSelect(sender As Object, e As TreeViewEventArgs) _
                                  Handles TreeView1.AfterSelect
  Dim userID As Integer = 0
  If Integer.TryParse(e.Node.Name, userID) Then
    ' do something with userID
  End If
End Sub
相关问题