Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共15 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

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

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

4楼
有点蓝 发表于:2024/5/13 9:36:00
把BuildTree放到导入的代码后面不就行了
5楼
hbfnmxb 发表于: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楼
有点蓝 发表于:2024/5/13 20:47:00
说明"TreeView1"不是这个窗口的,改为合适的窗口名,Forms("某窗口").Controls("TreeView1").BuildTree
7楼
hbfnmxb 发表于:2024/5/13 21:02:00
好了,感谢老师,解决了大问题
8楼
hbfnmxb 发表于:2024/5/13 21:13:00
老师,再问个问题,如何某一列的内容发生变化,这一列正好是多选筛选树的一个节点,如何设置更新?
9楼
hbfnmxb 发表于:2024/5/14 12:57:00
老师,假如某一列内容发生变化,这一列正好是多选筛选树的一个节点,如何设置更新?谢谢老师
10楼
cd_tdh 发表于:2024/5/14 13:10:00
表中设置代码,给目录树赋值
共15 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03491 s, 2 queries.