VB NET在树视图中添加多个ChildNode

问题描述

我在数据库中有很多记录,我需要像这样动态填充我的树视图:以下只是我所需要的示例:

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:

output database

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