以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]多选目录树如果是三级节点代码要怎么写? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=28737) |
-- 作者:ybzou3r -- 发布时间:2013/2/16 22:23:00 -- [求助]多选目录树如果是三级节点代码要怎么写? 请教高手,帮助里只有多选目录树二级节点的例子,想请教下三级节点的代码应该怎么写啊,有人帮忙指导下了
可以多选的筛选树本节的内容可以参考CaseStudy目录下的文件:多选筛选树.Table本节的任务是生成一个可以多选的筛选树:设计步骤非常简单:1、新建一个窗口,插入一个目录树控件,将目录树的“显示复选框”属性设置为True。2、将窗口的AfterLoad事件代码设置为:e.Form.Controls("TreeView1").BuildTree("订单","产品|客户")3、将目录树的AfterCheckNode事件代码设置为:DimtrvAsWinForm.TreeView=e.Sender DimfltAsString ForEachndAsWinForm.TreeNodeIne.node.Nodes\'同步子节点选中状态 nd.Checked=e.Node.Checked Next Ife.node.ParentNodeIsNotNothingThen\'去掉父节点选中状态 e.node.ParentNode.Checked=False EndIf ForEachndAsWinForm.TreeNodeIntrv.AllNodes Ifnd.Level>0AndAlsond.ParentNode.CheckedThen\'如果父节点选中 ContinueFor\'跳过此节点,处理下一结点 EndIf Ifnd.CheckedThen Ifflt>""Then flt=flt&" Or "\'注意用or而不是And EndIf Ifnd.Level=0Then\'注意下面的条件都要用括号括起来 flt=flt&"(产品= \'"&nd.Text&"\')" Else flt=flt&"( 产品 = \'"&nd.ParentNode.Text&"\' And 客户 = \'"&nd.Text&"\')" EndIf EndIf Next Tables("订单").Filter=flt 就是这个例子,如果是三级节点 比如是 大类|二类|三类 应该怎么写?? |
-- 作者:程兴刚 -- 发布时间:2013/2/16 22:28:00 -- 多少级都没问题,在论坛捜一搜,我记得在论坛回复过类似例子! |
-- 作者:ybzou3r -- 发布时间:2013/2/16 22:37:00 -- 已找到答案谢谢前辈 |
-- 作者:happy_gile -- 发布时间:2019/2/22 12:32:00 -- 有代码吗?发一下学习一下,也在为这个问题发烦 |
-- 作者:有点蓝 -- 发布时间:2019/2/22 13:39:00 -- 具体问题请贴出代码,或者上传实例说明 |
-- 作者:happy_gile -- 发布时间:2019/2/22 14:46:00 -- Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1") Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2") Dim nd1 As WinForm.TreeNode = trv1.SelectedNode Dim dr As DataRow If e.Node.ParentNode IsNot Nothing Then \'取消父节点的选中标记,因为选中子节点,就不要选中父节点了 e.Node.ParentNode.Checked = False End If For Each cnd As WinForm.TreeNode In e.Node.Nodes \'取消子节点的选中标记,因为选中父节点,就不要选中子节点了 cnd.Checked = False Next If nd1.Level = 0 Then dr = DataTables("users").Find("group = \'" & nd1.Name & "\' And 职务 Is Null") ElseIf nd1.Level = 1 Then dr = DataTables("users").Find("group = \'" & nd1.ParentNode.Name & "\' And 职务 = \'" & nd1.Name & "\'") ElseIf nd1.Level = 2 Then dr = DataTables("users").Find("group = \'" & nd1.ParentNode.Name & "\' And 职务 = \'" & nd1.Name & "\' and name = \'" & nd1.Name & "\'") End If If dr IsNot Nothing Then Dim nms As String For Each nd2 As WinForm.TreeNode In trv2.AllNodes If nd2.Checked Then nms = nms & "," & nd2.Name End If Next If nms > "" Then dr("授权") = nms.Trim(",") Else dr("授权") = Nothing End If End If
|
-- 作者:有点蓝 -- 发布时间:2019/2/22 15:39:00 -- dr = DataTables("users").Find("group = \'" & nd1.ParentNode.ParentNode.Name & "\' And 职务 = \'" & nd1.ParentNode.Name & "\' and name = \'" & nd1.Name & "\'") |