[原创]18行代码实现无限级填充TreeView的例子与函数



做的时候在网站找了N个小时的代码也没找见比较短小的代码,索性自已写了一个,功能是可以无限级分类填充TreeView.

'//调用时使用LoadTree(TreeView1.Nodes,0)  参数1表示当前的节目级别.0表示为根节点,参数2为父分类ID,0表示顶级分类,

 '//以下是代码,VB.NET 2.0,2.0和1.1基本上是一致的,在语法上没多大的区别.
 '//从数据库中读取分类信息加载分类到列表框中.
    Private Sub loadTree(ByVal Nodes As TreeNodeCollection, ByVal lbID As Integer)
        '获得各级分类
        Dim sNode As Integer = -1
        Dim CmdText As String = "Select * From sys_lb where FolderID=" + lbID.ToString + " Order by ID"
        Dim Ds As DataSet = New DataSet
        Dim Dr As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter(CmdText, SqlConn)
        Dr.Fill(Ds)
        If Ds.Tables(0).Rows.Count > 0 Then
            '加载节点
            Dim I As Integer
            For I = 0 To Ds.Tables(0).Rows.Count - 1
                sNode += 1
                Dim mylbName As String = Ds.Tables(0).Rows(I).Item("lbName").ToString
                Dim mylbID As String = Ds.Tables(0).Rows(I).Item("ID").ToString
                Nodes.Add(mylbID, mylbName)
                '读取当前节点的子节点加载
                loadTree(Nodes(sNode).Nodes, CInt(mylbID))
            Next
        End If
        TreeView1.ExpandAll()
    End Sub

'//Sys_lb表的结构:
CREATE TABLE [dbo].[sys_lb] (
 [ID] [int] IDENTITY (1, 1) NOT NULL ,
 [lbName] [varchar] (30) COLLATE Chinese_PRC_CI_AS NOT NULL ,
 [lbInfo] [varchar] (120) COLLATE Chinese_PRC_CI_AS NULL ,
 [folderID] [int] NOT NULL
) ON [PRIMARY]
GO

'//ID为自动编号Int类型,LbName为分类名称,LbInfo为分类说明,该列您可以修改或是删除它.FolderID存储父级分类ID

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值