以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]关于目录树授权的一个细节问题!【例子已上传】 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=15526) |
||||
-- 作者:gaoyong30000 -- 发布时间:2011/12/29 16:52:00 -- [求助]关于目录树授权的一个细节问题!【例子已上传】 选择了财务部,点击右边目录树的A卡管理后 授权表上是添加的财务部 但是我要求是添加的左边财务部下面的 三个岗位到授权表里,例如: 右边目录树Afterchecknode代码如下,请问如何更改:
Dim tr1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim tr2 As WinForm.TreeView = e.Form.Controls("TreeView2")
Dim nd1 As WinForm.TreeNode = tr1.SelectedNode
Dim nd2 As WinForm.TreeNode = tr2.SelectedNode
Dim dr As DataRow
If tr2.Focused AndAlso nd1 IsNot Nothing Then
If nd2.Level <> 0 Then
dr = DataTables("授权").Find("权限 = \'" & nd2.Text & "\'")
If nd2.Checked = True Then
dr("用户") = nd1.Text.trim("←") + "," + dr("用户")
Else
dr("用户") = dr("用户").Replace(nd1.Text.trim("←"),"")
End If
dr("用户") = dr("用户").Trim(",")
End If
For Each nd As WinForm.TreeNode In e.Node.AllNodes
dr = DataTables("授权").Find("权限 = \'" & nd.Text.trim("←") & "\'")
nd.Checked = e.Node.Checked
If nd.Checked = True Then
dr("用户") = nd1.Text.trim("←") + "," + dr("用户")
Else
dr("用户") = dr("用户").Replace(nd1.Text.trim("←"),"")
dr("用户") = dr("用户").Trim(",")
End If
Next
End If [此贴子已经被作者于2011-12-30 10:09:33编辑过]
|
||||
-- 作者:gaoyong30000 -- 发布时间:2011/12/29 23:19:00 -- 该怎么弄啊~~ |
||||
-- 作者:狐狸爸爸 -- 发布时间:2011/12/30 9:06:00 -- 将你的例子发上来 |
||||
-- 作者:gaoyong30000 -- 发布时间:2011/12/30 10:09:00 --
例子已上传 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2011/12/30 11:12:00 -- Dim tr1 As WinForm.TreeView = e.Form.Controls("TreeView1") Dim tr2 As WinForm.TreeView = e.Form.Controls("TreeView2") If tr2.Focused AndAlso e.node.Level > 0 Then Dim nd1 As WinForm.TreeNode = tr1.SelectedNode Dim nd2 As WinForm.TreeNode = e.node Dim dr As DataRow Dim nds As New List(of winform.treenode) If nd1.Nodes.count = 0 Then nds.add(nd1) Else nds.addrange(nd1.nodes) End If For Each nd As WinForm.TreeNode In nds dr = DataTables("授权").Find("权限 = \'" & nd2.Text & "\'") Dim nms As New List(of String) nms.Addrange(dr("用户").trim(",").split(",")) Dim nm As String = nd.Text.trim("←") If nd2.Checked = True Then If nms.Contains(nm) = False Then nms.add(nm) End If Else If nms.Contains(nm) Then nms.Remove(nm) End If End If dr("用户") = String.Join(",",nms.ToArray) Next End If |
||||
-- 作者:gaoyong30000 -- 发布时间:2011/12/30 13:56:00 -- 老大 还有个情况 没纳入代码里面!
If tr2.Focused AndAlso e.node.Level = 0 Then
例如:左边目录树选择备件部,右边目录树选 A卡管理 为true后其根节点都会为true 而且会在授权表中权限分组为 A卡管理 的所有行里添加 备件下面的所有岗位!
还有个功能 就是右边目录树 如果子节点全部为true 其父节点 也会为true
![]() ![]() [此贴子已经被作者于2011-12-30 13:58:17编辑过]
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2011/12/30 14:15:00 -- 呵呵,其实帮助的例子很好,何必这么辛苦的自己做呢,可以单项授权,也可以整个分类授权,不是更灵活和实用吗? 这种玩意,可不是随便能改的,需要非常老练才行:
Dim tr1 As WinForm.TreeView = e.Form.Controls("TreeView1")
|
||||
-- 作者:gaoyong30000 -- 发布时间:2011/12/30 15:07:00 -- 是啊 被绕得头疼死了 多谢老大了! |