某人 select 数据如何从数据库 table 到树视图控件 VB.NET?
How can someone select datat from a database table to a treeview control VB.NET?
VB.NET
我有以下 table 包含数据,如下图所示:
现在,我想将这些数据放入树视图控件中,如另一张图片所示:
请问,我该如何在 VB.NET 中做到这一点?
'''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''
这是我最终得到的代码:
Sub LoadTree()
Dim sql As String = "SELECT Employees.EmpNum , Employees.EmpName , departments.depNum, departments.depName, Company.ID, Company.CompName FROM Company INNER JOIN departments ON Company.ID = departments.compNum INNER JOIN Employees ON departments.depNum = Employees.depNum order by company.compName , departments.depName "
Dim dt As New DataTable()
Dim da As New SqlDataAdapter(sql, FrmMain.con)
da.Fill(dt)
TreeView1.Nodes.Clear()
Dim CompanyName As String
Dim depName As String
Dim EmpName As String
Dim tmpCName As String = ""
Dim tmpDName As String = ""
Dim sNode As New TreeNode
Dim ssNode As New TreeNode
'TreeView1.Nodes.Add("Dhafer")
For Each dr As DataRow In dt.Rows
CompanyName = dr("CompName").ToString()
depName = dr("depName").ToString()
EmpName = dr("EmpName").ToString()
If tmpCName = CompanyName Then
If tmpDName <> depName Then
TreeView1.SelectedNode.Nodes.Add(depName).Nodes.Add(EmpName)
End If
Else
tmpCName = CompanyName
tmpDName = depName
sNode = TreeView1.Nodes.Add(CompanyName)
TreeView1.SelectedNode = sNode
TreeView1.SelectedNode.Nodes.Add(depName).Nodes.Add(EmpName)
End If
'''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''
TreeNodes 有一个名称 属性,TreeNodeCollection(treeview.Nodes 或 treenode.Nodes 属性是什么)可以 find nodes based on the Name 所以你的逻辑需要更多喜欢:
For Each dr As DataRow In dt.Rows
Dim coName = dr("CompName").ToString()
Dim coNodeId = "co" & dr("ID").ToString()
'find or create the company node
Dim nodes = treeview.Nodes.Find(coNodeId, true)
Dim coNode as TreeNode
If nodes.Length = 0 Then 'didn't find: create and add
coNode = New TreeNode() { Name = coNodeId, Text = coName }
treeview.Nodes.Add(coNode)
Else 'did find
coNode = nodes(0)
End If
Dim depName = dr("depName").ToString()
Dim depNodeId = "dep" & dr("depNum").ToString()
'find or create the dep node under the co node
nodes = coNode.Nodes.Find(depNodeId, true)
Dim depNode as TreeNode
If nodes.Length = 0 Then
depNode = New TreeNode() { Name = depNodeId, Text = depName }
coNode.Nodes.Add(depNode)
Else
depNode = nodes(0)
End If
'create the emp node
Dim empName = dr("EmpName").ToString()
...
对于数据中的每一行 table 我们:
- 尝试找到co节点,如果不存在就创建,然后保持对它的引用
- 尝试在co节点下找到dep节点,不存在则创建,继续引用
- 在dep节点下添加emp节点
步骤 1 确保找到或创建共同节点,以便步骤 2 可以工作。第 2 步确保创建或找到 dep 节点,以便第 3 步可以工作
VB.NET 我有以下 table 包含数据,如下图所示:
现在,我想将这些数据放入树视图控件中,如另一张图片所示:
请问,我该如何在 VB.NET 中做到这一点? '''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''' 这是我最终得到的代码:
Sub LoadTree()
Dim sql As String = "SELECT Employees.EmpNum , Employees.EmpName , departments.depNum, departments.depName, Company.ID, Company.CompName FROM Company INNER JOIN departments ON Company.ID = departments.compNum INNER JOIN Employees ON departments.depNum = Employees.depNum order by company.compName , departments.depName "
Dim dt As New DataTable()
Dim da As New SqlDataAdapter(sql, FrmMain.con)
da.Fill(dt)
TreeView1.Nodes.Clear()
Dim CompanyName As String
Dim depName As String
Dim EmpName As String
Dim tmpCName As String = ""
Dim tmpDName As String = ""
Dim sNode As New TreeNode
Dim ssNode As New TreeNode
'TreeView1.Nodes.Add("Dhafer")
For Each dr As DataRow In dt.Rows
CompanyName = dr("CompName").ToString()
depName = dr("depName").ToString()
EmpName = dr("EmpName").ToString()
If tmpCName = CompanyName Then
If tmpDName <> depName Then
TreeView1.SelectedNode.Nodes.Add(depName).Nodes.Add(EmpName)
End If
Else
tmpCName = CompanyName
tmpDName = depName
sNode = TreeView1.Nodes.Add(CompanyName)
TreeView1.SelectedNode = sNode
TreeView1.SelectedNode.Nodes.Add(depName).Nodes.Add(EmpName)
End If
'''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''
TreeNodes 有一个名称 属性,TreeNodeCollection(treeview.Nodes 或 treenode.Nodes 属性是什么)可以 find nodes based on the Name 所以你的逻辑需要更多喜欢:
For Each dr As DataRow In dt.Rows
Dim coName = dr("CompName").ToString()
Dim coNodeId = "co" & dr("ID").ToString()
'find or create the company node
Dim nodes = treeview.Nodes.Find(coNodeId, true)
Dim coNode as TreeNode
If nodes.Length = 0 Then 'didn't find: create and add
coNode = New TreeNode() { Name = coNodeId, Text = coName }
treeview.Nodes.Add(coNode)
Else 'did find
coNode = nodes(0)
End If
Dim depName = dr("depName").ToString()
Dim depNodeId = "dep" & dr("depNum").ToString()
'find or create the dep node under the co node
nodes = coNode.Nodes.Find(depNodeId, true)
Dim depNode as TreeNode
If nodes.Length = 0 Then
depNode = New TreeNode() { Name = depNodeId, Text = depName }
coNode.Nodes.Add(depNode)
Else
depNode = nodes(0)
End If
'create the emp node
Dim empName = dr("EmpName").ToString()
...
对于数据中的每一行 table 我们:
- 尝试找到co节点,如果不存在就创建,然后保持对它的引用
- 尝试在co节点下找到dep节点,不存在则创建,继续引用
- 在dep节点下添加emp节点
步骤 1 确保找到或创建共同节点,以便步骤 2 可以工作。第 2 步确保创建或找到 dep 节点,以便第 3 步可以工作