以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求助,目录节点选择控制方法  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=50521)

--  作者:ndxfke
--  发布时间:2014/5/8 10:44:00
--  求助,目录节点选择控制方法

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

 

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


--  作者:Bin
--  发布时间:2014/5/8 10:46:00
--  
请上例子.

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





--  作者:有点甜
--  发布时间:2014/5/8 10:48:00
--  

 多选目录树?

 

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

 

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


--  作者:Bin
--  发布时间: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
--  发布时间:2014/5/8 11:12:00
--  

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

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

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

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

--  作者:ndxfke
--  发布时间: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


--  作者:有点甜
--  发布时间: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
--  发布时间:2014/5/8 15:12:00
--  

是的复选目录树!

 

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

 

 

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

 

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


--  作者:有点甜
--  发布时间: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
--  发布时间:2014/5/8 16:01:00
--  

管用的来了:

 

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

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