Foxtable(狐表)用户栏目专家坐堂 → 多选筛选树如何自动更新及实现显示“■”的问题


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

主题:多选筛选树如何自动更新及实现显示“■”的问题

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


加好友 发短信
等级:二尾狐 帖子:559 积分:6330 威望:0 精华:0 注册:2008/9/7 20:15:00
多选筛选树如何自动更新及实现显示“■”的问题  发帖心情 Post By:2024/5/12 15:47:00 [只看该作者]

第一个问题:多选筛选树如何自动更新
按照帮助文件,自己设计了一个多选筛选树,需要每次导入数据后,自动更新,如何加代码
图片点击可在新窗口打开查看此主题相关图片如下:00.png
图片点击可在新窗口打开查看

有的时候,第一节点是物理,有的时候是历史;第二节点有的时候是从-15开始,15结束,这里的筛选树,再导入数据后,不能自动更新。
窗口Afterload事件代码如下:
e.Form.Controls("TreeView1").BuildTree("专业分析", "首选科目|低分同位分差|专业类|专业名称|省份")
AftreCheckNode事件代码如下:
Dim nms As String() = {"首选科目","低分同位分差",  "专业类", "专业名称","省份"} '指定生成目录树的各列 
Dim qts As String() = {"'", "'", "'", "'", "'"} '指定将各列的值括起来的符号,这里都是字符型,所以都是单引号 
Dim trv As WinForm.TreeView = e.Sender 
Dim flt As String 
Dim nd As WinForm.TreeNode
For Each nd In e.node.allNodes '清除子节点的选中标记 
    nd.Checked = False 
Next 
nd = e.Node.ParentNode 
Do While nd IsNot Nothing '清除父节点的选中标记 
    nd.Checked = False 
    nd = nd.ParentNode 
Loop 
For Each nd 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
Tables("专业分析").Filter = flt
第二个问题:
第一节点没选,第二节点也没有选,第三节点选择了,显示打了“对勾”,第一节点与第二节点没有任何显示,能不能在第三节点选择的前提下,实现第一节点与第二节点显示“实心方块”,就是■这个样子的!老师,这个想法能实现吗?


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


加好友 发短信
等级:超级版主 帖子:111427 积分:567211 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/5/12 20:42:00 [只看该作者]

1、每次导入数据后重新调用BuildTree生成目录树

2、目录树只有勾选或者不勾选2种状态,没有■这个样子
上级同步勾选可以在AfterCheckNode事件这样

if e.Node.Checked 
dim pn as WinForm.TreeNode = e.Node.ParentNode
do while pn  IsNot Nothing Then 
    
pn .Checked = true
pn  = pn.ParentNode
loop
end if

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


加好友 发短信
等级:二尾狐 帖子:559 积分:6330 威望:0 精华:0 注册:2008/9/7 20:15:00
  发帖心情 Post By:2024/5/13 9:20:00 [只看该作者]

以下是引用有点蓝在2024/5/12 20:42:00的发言:
1、每次导入数据后重新调用BuildTree生成目录树
重新调用BuildTree生成目录树,能自动实现吗?现在可以手动关闭窗口,然后再打开,这样很麻烦!


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


加好友 发短信
等级:超级版主 帖子:111427 积分:567211 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/5/13 9:36:00 [只看该作者]

把BuildTree放到导入的代码后面不就行了

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


加好友 发短信
等级:二尾狐 帖子:559 积分:6330 威望:0 精华:0 注册:2008/9/7 20:15:00
  发帖心情 Post By:2024/5/13 18:56:00 [只看该作者]

以下是引用有点蓝在2024/5/13 9:36:00的发言:
把BuildTree放到导入的代码后面不就行了这里还是不懂:
导入代码如下:
e.Form.Controls("Label1").Text = "正在从【基础数据】表中导入所选专业,大约耗时210秒,3分钟左右,请稍后..."
Application.DoEvents()
Dim timestart, timeend As Date
timestart = Date.now

For Each dr1 As DataRow In DataTables("基础数据").Select("[确定导入] = true")
    Dim dr2 As DataRow = DataTables("专业分析").AddNew()
    For Each dc As DataCol In DataTables("基础数据").DataCols
        dr2(dc.Name) = dr1(dc.name)
    Next
Next

Tables("专业分析").Sort = "低分等效 DESC" '按"低分等效"列降序排列


Dim drs As List(Of DataRow)
drs = DataTables("专业分析").Select("[确定导入] = True")
For Each dr As DataRow In drs
    dr("确定导入") = False
Next

e.Form.Controls("TreeView1").BuildTree("专业分析", "首选科目|低分同位分差|专业类|专业名称|省份")  ‘这里是加上的BuildTree,提示找不到TreeView1。

e.Form.Controls("Label1").Text = "从【基础数据】表中所选专业导入完毕!"
timeend = Date.now
e.Form.Controls("Label1").text = "耗时" & (timeend - timestart).TotalSeconds & "秒"
Messagebox.show("从【基础数据】表中已导入符合条件的行,共" & (Tables("专业分析").rows.count) & "行", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
老师,这里如何修改
图片点击可在新窗口打开查看此主题相关图片如下:22.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:超级版主 帖子:111427 积分:567211 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/5/13 20:47:00 [只看该作者]

说明"TreeView1"不是这个窗口的,改为合适的窗口名,Forms("某窗口").Controls("TreeView1").BuildTree

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


加好友 发短信
等级:二尾狐 帖子:559 积分:6330 威望:0 精华:0 注册:2008/9/7 20:15:00
  发帖心情 Post By:2024/5/13 21:02:00 [只看该作者]

好了,感谢老师,解决了大问题

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


加好友 发短信
等级:二尾狐 帖子:559 积分:6330 威望:0 精华:0 注册:2008/9/7 20:15:00
  发帖心情 Post By:2024/5/13 21:13:00 [只看该作者]

老师,再问个问题,如何某一列的内容发生变化,这一列正好是多选筛选树的一个节点,如何设置更新?

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


加好友 发短信
等级:二尾狐 帖子:559 积分:6330 威望:0 精华:0 注册:2008/9/7 20:15:00
  发帖心情 Post By:2024/5/14 12:57:00 [只看该作者]

老师,假如某一列内容发生变化,这一列正好是多选筛选树的一个节点,如何设置更新?谢谢老师

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


加好友 发短信
等级:狐精 帖子:3223 积分:21401 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2024/5/14 13:10:00 [只看该作者]

表中设置代码,给目录树赋值

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