Foxtable(狐表)用户栏目专家坐堂 → 如何把长目录树路径分开,组成筛选加载的条件


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

主题:如何把长目录树路径分开,组成筛选加载的条件

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
如何把长目录树路径分开,组成筛选加载的条件  发帖心情 Post By:2024/4/14 21:43:00 [显示全部帖子]


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

作为基本信息资料,我把分页显示的规律的地址分列显示,并写了代码自动排序,可加载目录树最大层数只能去到6层,超过第6层报错,为让这些关键信息都能完整显示在加载目录树里,方便通过目录树下的文本框、按钮,定位、加载,我已经成功把目录合成为上图效果,即把巷、号、房三列用\分隔,合并为一层,姓名、手机号码两列也用\分隔,合并为一层,这样层数缩减了,效果一看也明白代表什么,就是到勾选目录树时如何安\把它们分开,组合成加载条件,我通过下面的代码测试,弹出的数据安层逐层弹出,用\分隔的内容重复出现,如何让它们不重复出现?
Dim trv As WinForm.TreeView = e.Sender
For Each nd In trv.AllNodes
Dim rts() As String = nd.FullPath.Split("\")
MessageBox.Show(nd.FullPath)
Next

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2024/4/14 22:37:00 [显示全部帖子]


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

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



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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2024/4/14 22:38:00 [显示全部帖子]


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

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2024/4/14 22:39:00 [显示全部帖子]

依上面的次序出现,我只要最后一次弹窗的效果。

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2024/4/14 22:43:00 [显示全部帖子]

我是刻意把分隔符写成与FullPath默认的分隔符一样,这样方便分离数组,如改为其他符号,又要费一番心思写代码把它们分离、组合成最后一张图的效果,我只要最后一次出现的效果,面前出现的不要。
[此贴子已经被作者于2024/4/14 23:13:48编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2024/4/14 22:47:00 [显示全部帖子]

哦勾选了三层,因此出现了三个弹窗,同一路径下只取最后一层的路径,其他的不要。

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2024/4/14 23:29:00 [显示全部帖子]

我说的最后一层是指勾选的最后一层,它不一定是目录树同一路径的最后一层,是不用循环,直接判断是否已勾选的最后一层,如果是取其路径就行,筛选树的完整代码我还在琢磨,目录村改为这样显示后原来的代码已经不合用了。

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2024/4/14 23:32:00 [显示全部帖子]

代码放在AfterCheckNode事件,勾选字节后筛选数据。

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2024/4/15 16:30:00 [显示全部帖子]

直接用
Dim rts() As String = e.node.FullPath.Split("\")
就可实现取当前目录树路径了。

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2024/4/16 13:55:00 [显示全部帖子]


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


图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20240416133958.png
图片点击可在新窗口打开查看
目录树结构如上面两图,我省去多选的代码,勾选的代码我测试过没问题了,问题在生成的筛选数据,我这样写时只显示当前勾选的数据,不同一路径的没显示了,如何把不同路径的数据同时显示:
Dim trv As WinForm.TreeView = e.Sender
Dim flt, flt0, flt1, flt2, flt3, flt4 , flt5 As String
Dim nd As WinForm.TreeNode
Dim nms As String() = {"明细分类", "住址_巷", "住址_号", "住址_房", "车牌号码", "姓名", "手机号码"} '指定生成目录树的各列
    Dim qts As String() = {"'", "'", "'", "'", "'", "'", "'"} '指定将各列的值括起来的符号,这里都是字符型,所以都是单引号
    Dim nms1 As String() = {"明细分类", "年", "月", "车牌号码", "姓名", "手机号码"} '指定生成目录树的各列
    Dim qts1 As String() = {"'", "", "", "'", "'", "'"} '指定将各列的值括起来的符号,这里都是字符型,所以都是单引号
    Dim nms2 As String() = {"住址_巷", "住址_号", "住址_房", "单位名称", "姓名", "手机号码"} '指定生成目录树的各列
    Dim qts2 As String() = {"'", "'", "'", "'", "'", "'"} '指定将各列的值括起来的符号,这里都是字符型,所以都是单引号
    Dim nms3 As String() = {"单位名称", "姓名", "手机号码"} '指定生成目录树的各列
    Dim qts3 As String() = {"'", "'", "'"} '指定将各列的值括起来的符号,这里都是字符型,所以都是单引号
    Dim nms4 As String() = {"明细分类", "车牌号码", "姓名", "手机号码"} '指定生成目录树的各列
    Dim qts4 As String() = {"'", "'", "'", "'"} '指定将各列的值括起来的符号,这里都是字符型,所以都是单引号
    If e.node.Checked Then
        Dim rts() As String = e.node.FullPath.Split("\")
        Dim val As String = ""
        Dim val1 As String = ""
        If e.Node.Level = 0 Then
            flt = "分类 = '" & rts(0) & "'"
        ElseIf e.Node.Level >= 1 Then
            If rts(0) = DataTables("分类").DataRows(0)("分类") And (rts(1) = DataTables("用户明细分类").DataRows(0)("用户明细分类") Or rts(1) = DataTables("用户明细分类").DataRows(1)("用户明细分类")) Then
                For i As Integer = 1 To rts.length - 1
                    If val1 > "" Then
                        val1 = val1 & " And " & nms(i - 1) & " = " & qts(i - 1) & rts(i) & qts(i - 1)
                    End If
                    val1 = nms(i - 1) & " = " & qts(i - 1) & rts(i) & qts(i - 1)
                Next
                If flt1 > "" Then
                    flt1 = flt1 & " Or (([分类]= '" & DataTables("分类").DataRows(0)("分类") & "Or [分类] = '" & _
                    DataTables("分类").DataRows(1)("分类") & "') And " & val1 & ")"
                Else 
                    flt1 = "([分类]= '" & DataTables("分类").DataRows(0)("分类") & "' Or [分类] = '" & DataTables("分类").DataRows(1)("分类") & _
                    "') And " & val1
                End If
            End If
            If rts(0) = DataTables("分类").DataRows(0)("分类") And rts(1) = DataTables("用户明细分类").DataRows(2)("用户明细分类") Then
                For i As Integer = 1 To rts.length - 1
                    If val > "" Then
                        val = val & " And " & nms4(i - 1) & " = " & qts4(i - 1) & rts(i) & qts4(i - 1)
                    End If
                    val = nms4(i - 1) & " = " & qts4(i - 1) & rts(i) & qts4(i - 1)
                Next
                If flt2 > "" Then
                    flt2 = flt2 & " Or ([分类] = '" & DataTables("分类").DataRows(0)("分类") & "' And " & val & ")"
                Else
                    flt2 = "分类 = '" & DataTables("分类").DataRows(0)("分类") & "' And " & val 
                End If
            End If
[此贴子已经被作者于2024/4/16 13:57:19编辑过]

 回到顶部
总数 17 1 2 下一页