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


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

主题:目录树

帅哥,在线噢!
有点蓝
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

Dim trv4 As WinForm.TreeView = e.Form.Controls("TreeView4")
trv4.BuildTree(dt1,"年|月|车牌号码","[分类] = '临时停车'","年 DESC,月 DESC")
'trv4.Nodes.Insert("加载临时停车数据",0)
Dim node1 As WinForm.TreeNode = trv1.Nodes.Add("临时停车")
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

刷新目录树、查找按钮需要判断 一下勾选的节点是哪一个分类的,然后对应处理那一个分类的条件

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


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

改过来了,依然无法预览,一预览就死机!也无法正常打开!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:小区车辆管理20210219.foxdb




 回到顶部
帅哥,在线噢!
有点蓝
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

连基本的代码都没有看懂,自己写的什么代码根本都不知道。到处乱改,不像是解决问题,而是制造问题的。


Dim node1 As WinForm.TreeNode = trv4.Nodes.Add("临时停车")

改为

Dim node1 As WinForm.TreeNode = trv1.Nodes.Add("临时停车")

其它地方不需要改

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


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

临时停车不是在第4个目录树里吗?
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,"住址_巷|住址_号|住址_房|户主姓名|手机号码|车牌号码","[分类] = '月租停车'","住址_序号,住址_号,住址_房")
'trv1.Nodes.Insert("加载数据",0)
trv1.Nodes.Insert("月租停车",0)
Do While trv1.Nodes.Count > 1
    trv1.Nodes(1).MoveRight
Loop
Dim trv4 As WinForm.TreeView = e.Form.Controls("TreeView4")
trv4.BuildTree(dt1,"年|月|车牌号码","[分类] = '临时停车'","年 DESC,月 DESC")
'trv4.Nodes.Insert("加载临时停车数据",0)
Dim node1 As WinForm.TreeNode = trv4.Nodes.Add("临时停车")
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
'加载第一页数据
With DataTables("缴费情况")
    .LoadFilter = "" '清除加载条件
    .LoadPage = 0 '加载第一页
    .LoadTop = 20 '每页5行
    .LoadOrder = "日期 DESC,单号 DESC"
    .LoadReverse = True
    .Load()
    e.Form.Controls("TextBox3").Value = 1 & "/" & .TotalPages
End With

 回到顶部
帅哥,在线噢!
有点蓝
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

所以说连基本的代码都没有看懂。建议先仔细理解一下4楼的说明

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


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

  你说要用两个目录树实现效果,我这样是上下两个目录树,如果Dim node1 As WinForm.TreeNode = trv4.Nodes.Add("临时停车")把trv4改为trv1,那么根本不用定义trv4了,也就是不用两个目录树了。

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


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

哦,我明白了,把第4个目录树设为不可见,然后把它的字节并入到第3个目录树下对吧?我一直不明这个做法!一直在问你目录树怎么排列怎么做?是叠加,其中一个不显吗?你一直不回我!

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


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

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

密码:888888
现在目录树已显示正常了,红色标注的字节筛选代码有问题。
'方法二:
Dim trv As WinForm.TreeView = e.Sender
Dim flt As String
If trv.Nodes(0).Name = 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
    trv.Nodes(0).Checked = False
End If
If trv.Nodes(0).Name = "月租停车" Then
    Dim nms As String() = {"月租停放","住址_巷","住址_号","住址_房","户主姓名","手机号码","车牌号码"} '指定生成目录树的各列
    Dim qts As String() = {"'","'","","","'","'","'"} '指定将各列的值括起来的符号,这里都是字符型,所以都是单引号
    Dim n As WinForm.TreeNode = e.Node.ParentNode
    Do While n IsNot Nothing '取消父节点的选中标记,因为选中子节点,就不要选中父节点了
        n.Checked = False
        n = n.ParentNode
    Loop
    For Each nd As WinForm.TreeNode In e.Node.AllNodes
        nd.Checked  = e.Node.Checked
    Next
    Do While n IsNot Nothing
        Dim chhh As Boolean = True
        For Each nd As WinForm.TreeNode In n.AllNodes
            If nd.Checked = False Then
                chhh = False
                Exit For
            End If
        Next
        n.Checked = chhh
        n = n.ParentNode
    Loop
    If e.node.Checked = False Then '去除当前字节选勾
        Do While n IsNot Nothing
            n.Checked = False '去掉父节点选中状态
            n = n.ParentNode
        Loop
    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 flt > "" Then
                flt = flt & " Or (" & val & ")"
            Else
                flt = val
            End If
        End If
    Next
ElseIf trv.Nodes(0).Name = "临时停车" Then
    Dim nms1 As String() = {"临时停车","年","月","车牌号码"} '指定生成目录树的各列
    Dim qts1 As String() = {"'","#","#","'"} '指定将各列的值括起来的符号,这里都是字符型,所以都是单引号
    Dim n1 As WinForm.TreeNode = e.Node.ParentNode
    Do While n1 IsNot Nothing '取消父节点的选中标记,因为选中子节点,就不要选中父节点了
        n1.Checked = False
        n1 = n1.ParentNode
    Loop
    For Each nd1 As WinForm.TreeNode In e.Node.AllNodes
        nd1.Checked  = e.Node.Checked
    Next
    Do While n1 IsNot Nothing
        Dim chhh As Boolean = True
        For Each nd1 As WinForm.TreeNode In n1.AllNodes
            If nd1.Checked = False Then
                chhh = False
                Exit For
            End If
        Next
        n1.Checked = chhh
        n1 = n1.ParentNode
    Loop
    If e.node.Checked = False Then '去除当前字节选勾
        Do While n1 IsNot Nothing
            n1.Checked = False '去掉父节点选中状态
            n1 = n1.ParentNode
        Loop
    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 flt > "" Then
                flt = flt & " Or (" & val1 & ")"
            Else
                flt = val1
            End If
        End If
    Next
End If
If flt > "" Then
    flt = flt & " And "
End If
With DataTables("缴费情况")
    .LoadFilter = flt '设置加载条件
    .LoadPage = 0 '加载第一页
    .LoadTop = 20 '每页5行
    .LoadOrder = "日期 DESC,单号 DESC"
    .LoadReverse = True
    .Load()
    e.Form.Controls("TextBox3").Value = 1 & "/" & .TotalPages
End With

 回到顶部
帅哥,在线噢!
有点蓝
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

红色字符代码没有任何用处,去掉

看看这屋里34楼的用法:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=160318&authorid=0&page=0&star=4

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


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

用字符显示第一、第二个字节名字不通用,另外分类会随时增加,不可能总添代码,我改为以分类行中的名字为节点名,得出的效果多了按年月显示的月租停车数据,请教如何处理?谢谢。

图片点击可在新窗口打开查看此主题相关图片如下:33.png
图片点击可在新窗口打开查看
Dim cmd As New SQLCommand
Dim dt As DataTable
'cmd.C '内部数据源,这行代码不需要
cmd.CommandText = "SELECT [_Identify],分类,住址_序号,住址_巷,住址_号,住址_房,Year(日期) As 年, Month(日期) As 月,户主姓名,手机号码,车牌号码 Fro m {车辆基本信息}"
dt = cmd.ExecuteReader()
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView2")
trv.BuildTree(dt,"住址_巷|住址_号|住址_房|户主姓名|手机号码|车牌号码","[分类] = '" & dt.DataRows(0)("分类") & "'","住址_序号,住址_号,住址_房")
trv.Nodes.Insert("显示所有数据",0)
trv.Nodes.Insert(dt.DataRows(0)("分类"),1)
Do While trv.Nodes.Count > 2
    trv.Nodes(2).MoveRight
Loop
Dim c As Integer = dt.DataRows.Count
If c >= 2 Then
    For a As Integer = 1 To c - 1
        Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView3")
        trv2.BuildTree(dt,"年|月|车牌号码","[分类] = '" & dt.DataRows(a)("分类") & "'","年 DESC,月 DESC")
        Dim node As WinForm.TreeNode = trv.Nodes.Add(dt.DataRows(a)("分类"))
        For i As Integer = trv2.Nodes.Count - 1 To 0 Step -1
            Dim nn As WinForm.TreeNode = trv2.Nodes(i)
            trv2.Nodes.RemoveAt(i)
            node.basenode.Nodes.Add(nn.basenode)
        Next
    Next
End If
'加载第一页数据
With DataTables("车辆基本信息")
    .LoadFilter = "" '清除加载条件
    .LoadPage = 0 '加载第一页
    .LoadTop = 20 '每页5行
    .LoadOrder = "分类,住址_序号,住址_号,住址_房"
    .LoadReverse = True
    .Load()
    e.Form.Controls("TextBox2").Value = 1 & "/" & .TotalPages
End With

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