以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]多选目录树如果是三级节点代码要怎么写?  (http://www.foxtable.com/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 & "\'")