You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 14:32:06