Foxtable(狐表)用户栏目专家坐堂 → 递归生成目录树的效率问题


  共有11576人关注过本帖树形打印复制链接

主题:递归生成目录树的效率问题

帅哥哟,离线,有人找我吗?
大红袍
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/4/22 17:02:00 [显示全部帖子]

以下是引用扶风在2016/4/22 16:59:00的发言:

请问这个怎么写到窗口的afterload里实现打开窗口就自动展开全部节点,不是现在需要点击节点才能打开。

 

e.Sender.ExpandAll


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/4/22 17:37:00 [显示全部帖子]

Dim trv As WinForm.TreeView = e.form.controls("TreeView1")
trv.StopRedraw
For Each pnd As WinForm.TreeNode In trv.allNodes
    If pnd.level = 1 Then  '如果是表名节点
        pnd.Nodes.Clear  '清空原有节点
        Dim tbName As String = pnd.Name
        Dim dr As DataRow = DataTables("表B").Find("表名 = '" & tbName & "'")
        If dr IsNot Nothing Then
            Dim Cols As String = dr("目录树列")
            Dim Cols_sort As String = Cols.replace("|",",")
           
            Dim nds As new List(Of WinForm.TreeNode)
            For i As Integer = 0 To Cols.Split("|").Length
                nds.Add(pnd)
            Next
            If nds.Count > 2 Then
                For Each arys As String() In DataTables(tbName).GetValues(Cols, "", Cols_sort)
                    Dim flag As Boolean = False
                    For i As Integer = 0 To arys.Length - 1
                        If nds(i+1).Name <> arys(i) OrElse flag Then
                            flag = True
                            nds(i+1) = nds(i).Nodes.Add(arys(i))
                        End If
                    Next
                Next
            Else
                For Each arys As String In DataTables(tbName).GetValues(Cols, "", Cols_sort)
                    nds(1) = nds(0).Nodes.Add(arys)
                Next
            End If
           
            pnd.Expand
        End If
    End If
Next
trv.ResumeRedraw

 回到顶部