VB.NET:DEV控件之TreeList控件-获取TreeList所有Node(递归)

本篇文章将介绍获取TreeList所有Node节点的方法,此处TreeList的数据使用数据源绑定,为动态获取,并为TreeList设置comboBox复选框,从数据库中动态选中TreeList的节点

一、首先我们先为TreeList绑定数据源,并设置KeyFieldName以及ParentFieldName

TreeList1.DataSource = DataTable1
TreeList1.KeyFieldName = "编号"
TreeList1.ParentFieldName = "上级编号"

二、从数据库中查询需要将复选框勾选的条件或数据,这里不多赘述,只是调用BLL查询数据库然后将返回结果放在一个DataTable中。这里起名为dt明细

三、先遍历第一层TreeList

For i As Integer = 0 To TreeList1.Rows.Count - 1
      For j As Integer = 0 To dt明细.Rows.Count - 1
            If TreeList1.Nodes(i).Item("编号").ToString = dt明细.Rows.Item(j).Item("编号").ToString Then
                  '将节点设置为选中
                  TreeList1.Nodes.Item(i).CheckState = CheckState.Checked
                  Exit For
            End If
      Next j
      '调用递归函数
      getAllNodes(TreeList1.Nodes(i))
Next i


四、接下来开始编写递归方法getAllNodes()
 

Public Sub getAllNodes(ParentNode As TreeListNode)
      Dim i As Integer = 0
      Try
            'node表示当前节点,用以查询是否存在下级节点
            For Each node As TreeListNode In ParentNode.Nodes
                  For j As Integer = 0 To dt明细.Rows.Count - 1
                        If TreeList1.Nodes(i).Item("编号").ToString = dt明细.Rows.Item(j).Item("编号").ToString Then
                              '将节点设置为选中
                              TreeList1.Nodes.Item(i).CheckState = CheckState.Checked
                              Exit For
                        End If
                  Next j
                  '判断是否存在下级节点
                  If node.Nodes.Count > 0 Then
                        '查询下一级节点
                        getAllNodes(node)
                  End If
                  i = i + 1
             Next
      Catch ex As Exception
            MsgBox(ex.ToString)
      End Try
End Sub


 

以上完成了本篇文章的需求,本人还是编程小白,如有错误以及更好的方法,希望大家多多指正,感谢您的阅读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值