Foxtable(狐表)用户栏目专家坐堂 → 求助,目录节点选择控制方法


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

主题:求助,目录节点选择控制方法

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


加好友 发短信
等级:三尾狐 帖子:792 积分:5649 威望:0 精华:0 注册:2013/12/9 20:12:00
求助,目录节点选择控制方法  发帖心情 Post By:2014/5/8 10:44:00 [只看该作者]

我有一个多层目录树,想实现控制用户,只能选择同一个根节点内的,任何节点。

 

如果选择了其它根节点,给一个提示。


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/5/8 10:46:00 [只看该作者]

请上例子.

点击的时候判断一下节点的当前Level 和其父节点名称即可.





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


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

 多选目录树?

 

 方法一:勾选以后,遍历所有节点,查找是否有其它选中的节点不在同一级节点;

 

 方法二:勾选第一次,为true的时候,用变量记录Level,再次勾选的时候,比较一下,就知道了。


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/5/8 10:51:00 [只看该作者]


BeforeSelectNode 事件


If e.Node.Level > 2 Then
    Dim n As WinForm.TreeNode = e.Node
    For i As Integer = 1 To e.Node.Level-2 
        n=n.ParentNode
    Next
    If n.text<>"对应节点" Then
        e.Cancel=True
    End If 
End If

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/5/8 11:12:00 [只看该作者]

看得见,而选不着,会让用户困扰。

应该按用户及其他条件筛选数据,再根据筛选后的数据生成目录树。

能看见,就能选,才人性化。

[此贴子已经被作者于2014-5-8 11:13:07编辑过]

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


加好友 发短信
等级:三尾狐 帖子:792 积分:5649 威望:0 精华:0 注册:2013/12/9 20:12:00
  发帖心情 Post By:2014/5/8 14:37:00 [只看该作者]

多谢几位指教...

 

根据需求才这样弄的。现在又碰到疑问了,

 

以下代码能检查到根节点选中的个数,n > 0 的时候,e.Cancel = True 没起到作用。不解是何原因。。。。。

 

Select Case e.Node.Level
    Case 0
        Dim n As Integer = 0
        For Each nd As WinForm.TreeNode In e.Sender.AllNodes
            If nd.Level = 0 And nd.Checked = True
                n  = n + 1
            End If
        Next
        If n > 0 Then
            e.Cancel = True
            'MessageBox.show("节点限制")
        End If

 

        case 1

        ..........

 

end select


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


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

 根节点不允许多选?

 

Select Case e.Node.Level
    Case 0
        If e.Node.Checked Then
            For Each nd As WinForm.TreeNode In e.Sender.nodes
                If nd.Checked = True
                    e.node.checked = False
                    msgbox("提示")
                    Exit For
                End If
            Next
        End If
    Case 1
       
End Select


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


加好友 发短信
等级:三尾狐 帖子:792 积分:5649 威望:0 精华:0 注册:2013/12/9 20:12:00
  发帖心情 Post By:2014/5/8 15:12:00 [只看该作者]

是的复选目录树!

 

想实现只能选择,一个根节点,或者只能选择一个根节点中的子节点。

 

 

用了您贴的这段代码,也不行。实在折腾不出来,上例子求助来了。

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:目录树选择.rar


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


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

 如下代码

 

If e.Node.Checked Then
    For Each nd As WinForm.TreeNode In e.Sender.AllNodes
        If nd.Checked = True AndAlso nd.FullPath <> e.Node.FullPath Then
            If nd.FullPath.Split("\")(0) <> e.Node.FullPath.Split("\")(0) Then
                e.node.checked = False
                msgbox("只能在同一根节点下")
                Exit For
            End If
        End If
    Next
End If


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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/5/8 16:01:00 [只看该作者]

管用的来了:

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:目录树只能选择一个根节点.rar

[此贴子已经被作者于2014-5-8 16:22:47编辑过]

 回到顶部
总数 11 1 2 下一页