Foxtable(狐表)用户栏目专家坐堂 → [求助]多选目录树如果是三级节点代码要怎么写?


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

主题:[求助]多选目录树如果是三级节点代码要怎么写?

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


加好友 发短信
等级:婴狐 帖子:91 积分:917 威望:0 精华:0 注册:2011/3/3 3:34:00
[求助]多选目录树如果是三级节点代码要怎么写?  发帖心情 Post By: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
就是这个例子,如果是三级节点 比如是  大类|二类|三类 应该怎么写??
 
 
 

 

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2013/2/16 22:28:00 [只看该作者]

多少级都没问题,在论坛捜一搜,我记得在论坛回复过类似例子!

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


加好友 发短信
等级:婴狐 帖子:91 积分:917 威望:0 精华:0 注册:2011/3/3 3:34:00
  发帖心情 Post By:2013/2/16 22:37:00 [只看该作者]

已找到答案谢谢前辈


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


加好友 发短信
等级:小狐 帖子:348 积分:3559 威望:0 精华:0 注册:2015/8/16 19:06:00
  发帖心情 Post By:2019/2/22 12:32:00 [只看该作者]

有代码吗?发一下学习一下,也在为这个问题发烦

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/2/22 13:39:00 [只看该作者]

具体问题请贴出代码,或者上传实例说明

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


加好友 发短信
等级:小狐 帖子:348 积分:3559 威望:0 精华:0 注册:2015/8/16 19:06:00
  发帖心情 Post By: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

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/2/22 15:39:00 [只看该作者]

dr = DataTables("users").Find("group = '" & nd1.ParentNode.ParentNode.Name & "' And 职务 = '" & nd1.ParentNode.Name & "' and  name = '" & nd1.Name & "'")

 回到顶部