请求修改VB.NET代码实现SQL Server表填充三级TreeView
三级TreeView填充实现代码(VB.NET)
以下是修改后的完整代码,实现从TrvBook表读取GrandLedgers(一级节点)、Ledgers(二级节点)、Persons(三级节点)构建三级TreeView:
Dim query As String = "SELECT GrandLedgers, Ledgers, Persons FROM TrvBook WHERE ID = @OwnerID" Using con = New SqlConnection(ConString) Using cmd = New SqlCommand(query, con) cmd.Parameters.Add(New SqlParameter("@OwnerID", My.Settings.OwnerID)) con.Open() Dim dt As SqlDataReader = cmd.ExecuteReader Dim currentGrandLedger As String = "" Dim currentLedger As String = "" Dim grandNode As TreeNode = Nothing Dim ledgerNode As TreeNode = Nothing While dt.Read Dim gl As String = dt("GrandLedgers").ToString() Dim l As String = dt("Ledgers").ToString() Dim p As String = dt("Persons").ToString() ' 处理一级节点:GrandLedgers If gl <> currentGrandLedger Then currentGrandLedger = gl grandNode = TreeViewBook.Nodes.Add(gl) currentLedger = "" ' 切换一级节点后重置二级节点跟踪 ledgerNode = Nothing End If ' 处理二级节点:Ledgers If l <> currentLedger Then currentLedger = l ledgerNode = grandNode.Nodes.Add(l) End If ' 添加三级节点:Persons ledgerNode.Nodes.Add(p) End While End Using End Using TreeViewBook.ExpandAll()
关键改动说明
- 新增
currentLedger和ledgerNode变量,跟踪当前二级节点状态,避免重复创建相同二级节点 - 不再依赖
TreeViewBook.SelectedNode操作节点,改用变量直接引用对应层级节点,逻辑更稳定 - 依次判断一级、二级节点是否已存在,不存在则创建,最后统一添加三级节点
Persons - 使用字段名
dt("GrandLedgers")替代索引dt.Item(0),代码可读性更强
内容的提问来源于stack exchange,提问作者user24059174
相关产品推荐
相关产品推荐

