当前位置:网站首页>VB:DEV控件之TreeList控件-获取TreeList所有Node(递归)

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

2020-11-10 14:46:13 墨小轩轩

本篇文章将介绍获取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

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

版权声明
本文为[墨小轩轩]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/MoXan/p/13953649.html