问题描述
我在数据库中有很多记录,我需要像这样动态填充我的树视图:以下只是我所需要的示例:
TreeView1.Nodes(a).ChildNodes.Add(New TreeNode("ChildNode " & b))
TreeView1.Nodes(a).ChildNodes(b).ChildNodes.Add(New TreeNode("ChildNode 2 lvl " & b))
我正在从MysqL Db获取记录,我需要知道如何将多级ChildNodes添加到循环中... ...等等...
您有什么建议或想法吗?
解决方法
如果要使用各种级别的Treenode,可以使用“查找”功能
Dim TempNode As TreeNode = TreeView1.Nodes.Find("Node where I want to add SubNode",True).FirstOrDefault
TempNode.Nodes.Add("SubNode","SubNode")
这样,您可以将SubNode添加到您选择的任何节点。
.Find("key",True)
使用以下键查找树节点,.FirstOrDefault
首先选择。最后,您只需将新的SubNode添加到Tempnode。
您认为您是从MySql动态获取它的。可能会导致错误,例如“正在从错误的线程调用此控件上执行的操作beeing。使用Contol.Invoke或Control.BeginInvoke将其编组到正确的线程以执行此操作。”只需将TempNode.Nodes.Add("SubNode","SubNode")
更改为TreeView1.Invoke(Sub() TempNode.Nodes.Add("SubNode","SubNode"))
示例:
Dim comm As String = "SELECT * FROM YourTableName"
Dim SqlCmnd as SqlCommand = New SqlCommand(comm,YourMySqlConnection)
Dim READER As SqlDataReader
READER = SqlCmnd.ExecuteReader
While READER.Read
Dim NewNode As TreeNode = New TreeNode(READER.Item("origCategoryID"))
TreeView1.Nodes.Add(NewNode)
NewNode.Nodes.Add(READER.Item("categoryOrderID"))
End While
READER.Close()
示例2:
While READER.Read
If TreeView1.Nodes.Find(READER.Item("OrigCatOrderID"),True).Length > 0 Then
Dim NewNode As TreeNode = TreeView1.Nodes.Find(READER.Item("OrigCatOrderID"),True).FirstOrDefault
NewNode.Nodes.Add(READER.Item("CatOrderID"),READER.Item("CatOrderID"))
Else
TreeView1.Nodes.Add(READER.Item("OrigCatOrderID"),READER.Item("OrigCatOrderID"))
TreeView1.Nodes(READER.Item("OrigCatOrderID")).Nodes.Add(READER.Item("CatOrderID"),READER.Item("CatOrderID"))
End While