Foxtable(狐表)用户栏目专家坐堂 → [求助]多选目录树首节点如何发挥作用位置插入节点


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

主题:[求助]多选目录树首节点如何发挥作用位置插入节点

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


加好友 发短信
等级:童狐 帖子:284 积分:2793 威望:0 精华:0 注册:2012/10/26 0:45:00
[求助]多选目录树首节点如何发挥作用位置插入节点  发帖心情 Post By:2018/10/16 17:16:00 [只看该作者]

多选目录树首节点如何发挥作用位置插入节点

图片点击可在新窗口打开查看此主题相关图片如下:多选目录树第一节点不参与选择.jpg
图片点击可在新窗口打开查看
如图中我在首节点位置插入了“所有记录”,让这个节点发挥作用,请帮忙看看,谢谢!!!


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/16 17:21:00 [只看该作者]

在你的事件那里判断节点名称,如

 

If e.node.text = "所有节点" OrElse e.sender.Nodes("所有节点").checked Then

    msgbox(123)

Else

    '本来代码

End If


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


加好友 发短信
等级:童狐 帖子:284 积分:2793 威望:0 精华:0 注册:2012/10/26 0:45:00
  发帖心情 Post By:2018/10/16 18:11:00 [只看该作者]

现在又出现了一个问题,先勾选了名为“所有记录的”的节点后再勾选其他节点时,发现都是勾选状态,无法进行多选,如何在勾选了其他节点后,自动取消名为“所有记录的”的节点勾选,谢谢

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/16 18:14:00 [只看该作者]

改成

 

If e.node.text = "所有节点" Then

    msgbox(123)

Else

    e.sender.Nodes("所有节点").checked = false

    '本来代码

End If


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


加好友 发短信
等级:童狐 帖子:284 积分:2793 威望:0 精华:0 注册:2012/10/26 0:45:00
  发帖心情 Post By:2018/10/16 18:52:00 [只看该作者]

没有效果

图片点击可在新窗口打开查看此主题相关图片如下:不行.jpg
图片点击可在新窗口打开查看
勾选其他节点后,名为“所有记录”的节点仍是勾选状态。并且无法多选
[此贴子已经被作者于2018/10/16 18:53:32编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110647 积分:563143 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/10/16 20:10:00 [只看该作者]

代码放到AfterCheckNode事件

贴出你的代码看看

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


加好友 发短信
等级:童狐 帖子:284 积分:2793 威望:0 精华:0 注册:2012/10/26 0:45:00
  发帖心情 Post By:2018/10/16 21:22:00 [只看该作者]

还是不行的

图片点击可在新窗口打开查看此主题相关图片如下:不行2.jpg
图片点击可在新窗口打开查看
这是放在AfterCheckNode事件的代码
Dim Lbs As String() ={"年份","月份","字母","Name","编号"}   '通用多选目录树加载代码.套用时只需修改本行.
Dim trv As WinForm.TreeView = e.form.Controls("TreeView1")
Dim nd As WinForm.TreeNode = trv.SelectedNode

'If e.sender.Nodes("所有记录").checked Then
     'e.sender.Nodes("所有记录").checked = False
'End If
If e.node.text = "所有节点" Then
    msgbox(123)
Else
    e.sender.Nodes("所有节点").checked = False
    '本来代码
    Dim flt,s1 As String
    Dim n1 As Integer
    For Each ndx As WinForm.TreeNode In nd.allNodes '同步子节点选中状态
        ndx.Checked = nd.Checked
    Next
    
    If nd.ParentNode IsNot Nothing Then     '确定父节点选中状态:
        For i As Integer = nd.ParentNode.level To 0 Step -1   '
            Dim Inum As Integer = nd.ParentNode.Nodes.Count
            For Each ndc As WinForm.TreeNode In nd.ParentNode.Nodes
                If ndc.Checked Then
                    Inum = Inum -1
                End If
            Next
            If Inum = 0 Then
                nd.ParentNode.Checked = True
                nd = nd.ParentNode
            Else
                nd.ParentNode.Checked = False
                nd = nd.ParentNode
            End If
        Next
    End If
    
    For Each nd In trv.AllNodes
        If nd.Level > 0 AndAlso nd.ParentNode.Checked Then '如果父节点选中
            Continue For '跳过此节点,处理下一结点
        End If
        If nd.name = "所有记录" AndAlso nd.Checked Then '如果父节点选中
            'nd.Checked = False
            Continue For '跳过此节点,处理下一结点
        End If
        If nd.Checked AndAlso nd.FullName IsNot Nothing Then
            n1=0
            For Each s1 In nd.FullName.split("\")
                flt+ =iif(n1 =0,") Or (" ," And ") & Lbs(n1) & " = '" & s1 & "'"
                n1+=1
            Next
        End If
    Next
    Application.DoEvents  '先勾选目录树,再加载数据.
    
    If  flt  IsNot Nothing  Then
        Tables("全表").DataTable.LoadFilter = "(" & flt.Substring(4) & ")) and 代码 = 'YGKQ'"
        Tables("全表").DataTable.Load()
        'Tables("全表").Sort = "一级导航排序"
    Else
        Tables("全表").DataTable.LoadFilter ="[_Identify] Is Null"
        Tables("全表").DataTable.Load()
    End If
End If

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110647 积分:563143 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/10/16 21:42:00 [只看该作者]

汗,别人是举个例子,你就不会改为自己节点的名称么!

If e.node.text = "所有记录" Then
    msgbox(123)
Else
    e.sender.Nodes("所有记录").checked = False
    '本来代码
    Dim flt,s1 As String

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


加好友 发短信
等级:童狐 帖子:284 积分:2793 威望:0 精华:0 注册:2012/10/26 0:45:00
  发帖心情 Post By:2018/10/17 10:07:00 [只看该作者]

好的
[此贴子已经被作者于2018/10/17 10:12:56编辑过]

 回到顶部