Foxtable(狐表)用户栏目专家坐堂 → 目录树


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

主题:目录树

美女呀,离线,留言给我吧!
采菊东篱下
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/2/20 0:57:00 [只看该作者]

可以了
Dim cmd1 As New SQLCommand
Dim dt1 As DataTable
'cmd.C '内部数据源,这行代码不需要
cmd1.CommandText = "SELECT DISTINCT 分类,住址_序号,住址_巷,住址_号,住址_房,Year(日期) As 年, Month(日期) As 月,户主姓名,手机号码,车牌号码 Fro m {缴费情况}"
dt1 = cmd1.ExecuteReader()
Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
trv1.BuildTree(dt1,"住址_巷|住址_号|住址_房|户主姓名|手机号码|车牌号码","[分类] = '" & dt1.DataRows(0)("分类") & "'","住址_序号,住址_号,住址_房")
trv1.Nodes.Insert(dt1.DataRows(0)("分类"),0)
Do While trv1.Nodes.Count > 1
    trv1.Nodes(1).MoveRight
Loop
Dim fls1 As List(Of String) = dt.SQLGetValues("分类","[分类] <> '" & dt1.DataRows(0)("分类") & "'","")
For Each fl1 As String In fls
    Dim trv4 As WinForm.TreeView = e.Form.Controls("TreeView4")
    trv4.BuildTree(dt1,"年|月|车牌号码","[分类] = '" & fl1 & "'","年 DESC,月 DESC")
    trv1.Nodes.Insert("显示所有数据",0)
    Dim node1 As WinForm.TreeNode = trv1.Nodes.Add(fl1)
    For i As Integer = trv4.Nodes.Count - 1 To 0 Step -1
        Dim nn As WinForm.TreeNode = trv4.Nodes(i)
        trv4.Nodes.RemoveAt(i)
        node1.basenode.Nodes.Add(nn.basenode)
    Next
Next
'加载第一页数据
With DataTables("缴费情况")
    .LoadFilter = "" '清除加载条件
    .LoadPage = 0 '加载第一页
    .LoadTop = 20 '每页5行
    .LoadOrder = "日期 DESC,单号 DESC"
    .LoadReverse = True
    .Load()
    e.Form.Controls("TextBox3").Value = 1 & "/" & .TotalPages
End With
[此贴子已经被作者于2021/2/23 15:16:39编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  22楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/2/21 9:13:00 [只看该作者]

看过你给的连接例子,
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=160318&authorid=0&page=0&star=4
例子中的
Dim nms As String() = {"单位","部门","责任人"} '指定生成目录树的各列
Dim qts As String() = {"'","'","'"}
nms = {"单位","部门","责任人"}
都是字符型,你可以用
If nd.Checked  Then
        If nd.FullPath Like "按设备*"
            nms = {"设备大类","设备二类","设备三类"}
        Else
            nms = {"单位","部门","责任人"}
        End If
简洁、明了,我的例子
Dim nms As String() = {"住址_巷","住址_号","住址_房","户主姓名","手机号码","车牌号码"} '指定生成目录树的各列
Dim qts As String() = {"'","","","'","'","'"} '指定将各列的值括起来的符号,这里都是字符型,所以都是单引号

Dim nms1 As String() = {"年","月","车牌号码"'指定生成目录树的各列

Dim qts1 As String() = {"#","#","'"'指定将各列的值括起来的符号,这里都是字符型,所以都是单引号

有字符型、有数字型、有日期型,两个集合构成不一样,还是分开各自定义好,另分类名称不一定是代码中指定的名称,且它还会添加,所以这样写不具通用性,我改过一下,但报错就暂时注识,先把效果搞出来,再想通用性。

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:小区车辆管理2212219.foxdb

密码:888888

代码过长不允许发,看主界面窗口缴费任务栏中的加载目录树AfterCheckNode事件代码。


[此贴子已经被作者于2021/2/21 22:22:54编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  23楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105473 积分:536350 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/21 20:48:00 [只看该作者]

日期建议另外单独处理,没有办法通用

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  24楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/2/22 17:10:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:小区车辆管理22201.foxdb

密码:888888
这样写点目录树字节没反应。
Dim trv As WinForm.TreeView = e.Sender
Dim flt,flt1,flt2 As String
If trv.Nodes(0).Name = "显示所有数据" '专处理显示所有数据的勾选选项打勾后缴费情况表的筛选问题,打勾全显,去除勾不显.
    If e.Node.Checked
        For Each nd As WinForm.TreeNode In trv.AllNodes
            nd.Checked = False
        Next
        e.Node.Checked = True
    Else
        flt = "1=2"
    End If
ElseIf trv.Nodes(0).Name = DataTables("缴费情况").DataRows(0)("分类") And trv.Nodes(0).Checked = False Then
    Dim nms As String() = {"住址_巷","住址_号","住址_房","户主姓名","手机号码","车牌号码"} '指定生成目录树的各列
    Dim qts As String() = {"'","","","'","'","'"} '指定将各列的值括起来的符号,这里都是字符型,所以都是单引号
    For Each nd As WinForm.TreeNode In e.node.allNodes  '清除子节点的选中标记
        nd.Checked = e.node.Checked
    Next
    If e.node.Checked = False
        Dim pd As WinForm.TreeNode = e.Node.ParentNode
        If pd IsNot Nothing Then
            pd.Checked = False
        End If
    End If
    For Each nd As WinForm.TreeNode In trv.AllNodes
        If nd.Checked  Then
            Dim rts() As String = nd.FullPath.Split("\")
            Dim val As String = ""
            For i As Integer = 0 To rts.length - 1
                If val > "" Then
                    val = val & " And "
                End If
                val = val & nms(i) & " = " & qts(i) & rts(i) & qts(i)
            Next
            If flt1 > "" Then
                flt1 = flt1 & " Or (" & val & ")"
            Else
                flt1 = val
            End If
        End If
    Next
Else
    trv.Nodes(0).Checked = False
    Dim fls As List(Of String) = DataTables("缴费情况").SQLGetValues("分类","[分类] <> '" & DataTables("缴费情况").DataRows(0)("分类") & "'","")
    For Each fl As String In fls
        trv.Nodes(0).Name = fl
        trv.Nodes(0).Checked = False
        Dim nms1 As String() = {"年","月","车牌号码"} '指定生成目录树的各列
        Dim qts1 As String() = {"#","#","'"} '指定将各列的值括起来的符号,这里都是字符型,所以都是单引号
        For Each nd As WinForm.TreeNode In e.node.allNodes  '清除子节点的选中标记
            nd.Checked = e.node.Checked
        Next
        If e.node.Checked = False
            Dim pd As WinForm.TreeNode = e.Node.ParentNode
            If pd IsNot Nothing Then
                pd.Checked = False
            End If
        End If
        For Each nd1 As WinForm.TreeNode In trv.AllNodes
            If nd1.Checked  Then
                Dim rts1() As String = nd1.FullPath.Split("\")
                Dim val1 As String = ""
                For i1 As Integer = 0 To rts1.length - 1
                    If val1 > "" Then
                        val1 = val1 & " And "
                    End If
                    val1 = val1 & nms1(i1) & " = " & qts1(i1) & rts1(i1) & qts1(i1)
                Next
                If flt2 > "" Then
                    flt2 = flt2 & " Or (" & val1 & ")"
                Else
                    Flt2 = val1
                End If
            End If
        Next
    Next
End If
flt = flt1
If flt > "" Then
    If flt2 > "" Then
        flt = "(" & flt1 & ") and (" & flt2 & ")"
    End If
Else
    flt = flt2
End If
Tables("主界面_Table5").Filter = flt

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  25楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/2/22 18:57:00 [只看该作者]

加上红色标注的一级字符也没反应!
Dim trv As WinForm.TreeView = e.Sender
Dim flt,flt1,flt2 As String
If trv.Nodes(0).Name = "显示所有数据" '专处理显示所有数据的勾选选项打勾后缴费情况表的筛选问题,打勾全显,去除勾不显.
    If e.Node.Checked
        For Each nd As WinForm.TreeNode In trv.AllNodes
            nd.Checked = False
        Next
        e.Node.Checked = True
    Else
        flt = "1=2"
    End If
ElseIf trv.Nodes(0).Name = DataTables("缴费情况").DataRows(0)("分类") And trv.Nodes(0).Checked = False Then
    Dim nms As String() = {"'" & DataTables("缴费情况").DataRows(0)("分类") & "'","住址_巷","住址_号","住址_房","户主姓名","手机号码","车牌号码"} '指定生成目录树的各列
    Dim qts As String() = {"'","'","","","'","'","'"} '指定将各列的值括起来的符号,这里都是字符型,所以都是单引号
    For Each nd As WinForm.TreeNode In e.node.allNodes  '清除子节点的选中标记
        nd.Checked = e.node.Checked
    Next
    If e.node.Checked = False
        Dim pd As WinForm.TreeNode = e.Node.ParentNode
        If pd IsNot Nothing Then
            pd.Checked = False
        End If
    End If
    For Each nd As WinForm.TreeNode In trv.AllNodes
        If nd.Checked  Then
            Dim rts() As String = nd.FullPath.Split("\")
            Dim val As String = ""
            For i As Integer = 0 To rts.length - 1
                If val > "" Then
                    val = val & " And "
                End If
                val = val & nms(i) & " = " & qts(i) & rts(i) & qts(i)
            Next
            If flt1 > "" Then
                flt1 = flt1 & " Or (" & val & ")"
            Else
                flt1 = val
            End If
        End If
    Next
Else
    trv.Nodes(0).Checked = False
    Dim fls As List(Of String) = DataTables("缴费情况").SQLGetValues("分类","[分类] <> '" & DataTables("缴费情况").DataRows(0)("分类") & "'","")
    For Each fl As String In fls
        trv.Nodes(0).Name = fl
        trv.Nodes(0).Checked = False
        Dim nms1 As String() = {"'" & fl & "'","年","月","车牌号码"} '指定生成目录树的各列
        Dim qts1 As String() = {"'","#","#","'"} '指定将各列的值括起来的符号,这里都是字符型,所以都是单引号
        For Each nd As WinForm.TreeNode In e.node.allNodes  '清除子节点的选中标记
            nd.Checked = e.node.Checked
        Next
        If e.node.Checked = False
            Dim pd As WinForm.TreeNode = e.Node.ParentNode
            If pd IsNot Nothing Then
                pd.Checked = False
            End If
        End If
        For Each nd1 As WinForm.TreeNode In trv.AllNodes
            If nd1.Checked  Then
                Dim rts1() As String = nd1.FullPath.Split("\")
                Dim val1 As String = ""
                For i1 As Integer = 0 To rts1.length - 1
                    If val1 > "" Then
                        val1 = val1 & " And "
                    End If
                    val1 = val1 & nms1(i1) & " = " & qts1(i1) & rts1(i1) & qts1(i1)
                Next
                If flt2 > "" Then
                    flt2 = flt2 & " Or (" & val1 & ")"
                Else
                    Flt2 = val1
                End If
            End If
        Next
    Next
End If
flt = flt1
If flt > "" Then
    If flt2 > "" Then
        flt = "(" & flt1 & ") and (" & flt2 & ")"
    End If
Else
    flt = flt2
End If
Tables("主界面_Table5").Filter = flt

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  26楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105473 积分:536350 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/22 20:51:00 [只看该作者]

Dim trv As WinForm.TreeView = e.Sender
Dim flt,flt1,flt2 As String
If e.Node.Name = "显示所有数据" '专处理显示所有数据的勾选选项打勾后缴费情况表的筛选问题,打勾全显,去除勾不显.
    If e.Node.Checked
        For Each nd As WinForm.TreeNode In trv.AllNodes
            nd.Checked = False
        Next
        e.Node.Checked = True
    Else
        flt = "1=2"
    End If
Else
    Dim nms As String() = {"住址_巷","住址_号","住址_房","户主姓名","手机号码","车牌号码"} '指定生成目录树的各列
    Dim qts As String() = {"'","","","'","'","'"} '指定将各列的值括起来的符号,这里都是字符型,所以都是单引号
    For Each nd As WinForm.TreeNode In e.node.allNodes  '清除子节点的选中标记
        nd.Checked = e.node.Checked
    Next
    If e.node.Checked = False
        Dim pd As WinForm.TreeNode = e.Node.ParentNode
        If pd IsNot Nothing Then
            pd.Checked = False
        End If
    End If
    
    For Each nd As WinForm.TreeNode In trv.AllNodes
        If nd.Checked  Then
            Dim val As String = ""
            Dim rts() As String = nd.FullPath.Split("\")
            If nd.FullPath Like "月租停车*"
                For i As Integer = 1 To rts.length - 1
                    If val > "" Then
                        val = val & " And "
                    End If
                    val = val & nms(i-1) & " = " & qts(i-1) & rts(i) & qts(i-1)
                Next
                If flt1 > "" Then
                    flt1 = flt1 & " or (" & val & ")"
                Else
                    flt1 = val
                End If
            Else
                If val > "" Then
                    val = val & " And "
                End If
                Dim d1,d2 As Date
                If rts.Length = 2 Then
                    d1 = new Date(cint(rts(1)),1,1)
                    d2 = new Date(cint(rts(1)),12,11)
                ElseIf rts.Length > 2
                    d1 = new Date(cint(rts(1)),cint(rts(2)),1)
                    d2 = new Date(cint(rts(1)),cint(rts(2)),Date.DaysInMonth(cint(rts(1)),cint(rts(2))))
                End If
                val = val & "日期 >= #" & d1 & "# and 日期 <=#" & d2 & "#"
                If nd.Level = 3 Then
                    If val > "" Then
                        val = val & " And "
                    End If
                    val = val & "车牌号码 = '" & nd.Text & "'"
                End If
                
                
                If flt2 > "" Then
                    flt2 = flt2 & " or (" & val & ")"
                Else
                    flt2 = val
                End If
            End If
            
        End If
    Next
    If flt1 > "" Then
        flt1 = "分类='月租停车' and (" & flt1 & ")"
    End If
    If flt2 > "" Then
        flt2 = "分类='临时停车' and (" & flt2 & ")"
    End If
    flt = flt1
    If flt > "" Then
        If flt2 > "" Then
            flt = "(" & flt1 & ") or (" & flt2 & ")"
        End If
    Else
        flt = flt2
    End If
End If
Tables("主界面_Table5").Filter = flt
[此贴子已经被作者于2021/2/22 20:51:16编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  27楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/2/22 22:24:00 [只看该作者]

  我今晚看了一晚以年、月、车牌号码为筛选目录树的相关帮助,知道我那样写不对,正想改,看到你回复,乍看有点被绕晕,不用心理解真很容易被那些逻辑运算绕晕,静下心来慢慢细看,终于明白每一行的意思了!谢谢指教,没人指正,任我怎么想也绕不到最后的条件代码,厉害!
[此贴子已经被作者于2021/2/22 22:27:56编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  28楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/2/28 16:59:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:小区车辆管理202122801.foxdb

密码:888888

图片点击可在新窗口打开查看此主题相关图片如下:2802.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2801.png
图片点击可在新窗口打开查看



再添加两个一级节点,点击字节的目录树报错:


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  29楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105473 积分:536350 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/28 21:53:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:小区车辆管理202122801.zip


 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  30楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/2/28 22:10:00 [只看该作者]

还是报错啊!

图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:12.png
图片点击可在新窗口打开查看


 回到顶部
总数 107 上一页 1 2 3 4 5 6 7 8 9 10 下一页 ..11