以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]结合帮助里的 多层复杂授权求助【老大帮忙看下 最后的代码有问题嘛?】~~~~~~~~~~~~~ (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=16834) |
-- 作者:gaoyong30000 -- 发布时间:2012/2/24 22:36:00 -- [求助]结合帮助里的 多层复杂授权求助【老大帮忙看下 最后的代码有问题嘛?】~~~~~~~~~~~~~ 之前 老大帮助我解决了 帮助中的目录树授权
http://www.datasoft.com.cn/dispbbs.asp?BoardID=2&ID=15526&skin=0
目前由于我设计的是ERP系统 界面已基本定型 如图
我是采用的分级授权的方式,左边的导航栏各按钮(例如图中的【销售管理】)是第一层;
各按钮里的功能模块(如图中显示的【A卡管理】和【车辆出入库】)是第二层,
右边的模块流程图里的图标 是第三层
第四层就是流程图功能进去后的各项细分小功能 比如快捷菜单里的更改销售顾问,如下图
很显然之前的授权模式已经不适合现在的分层授权方式,之前的如图
现在的
我权限是采用 内部函数 代码中利用 Functions.Execute("shouquan","绩效考核","绩效录入") 等等来判断的
请问我这种想法是否可行,或者有必要?? [此贴子已经被作者于2012-2-27 9:53:07编辑过]
|
-- 作者:gaoyong30000 -- 发布时间:2012/2/25 13:14:00 -- 顶下~~~~~~~ |
-- 作者:gaoyong30000 -- 发布时间:2012/2/25 17:34:00 -- 自己看了下代码 感觉好复杂 |
-- 作者:gaoyong30000 -- 发布时间:2012/2/26 9:38:00 -- 顶起~ |
-- 作者:狐狸爸爸 -- 发布时间:2012/2/26 10:03:00 -- 道理都是一样的,关键是要理解帮助的示例,才能灵活变通。 |
-- 作者:gaoyong30000 -- 发布时间:2012/2/26 10:58:00 -- 那就按这个来吧
老大 您之前帮我写的这段代码 有几处我不太明白 请教下~~ Dim tr1 As WinForm.TreeView = e.Form.Controls("TreeView1") 触发事件的节点层级=选择的节点层级 (肯定相等的啊,为什么还要有个=比较) Dim nds1 As New List(of winform.treenode) If tr1.SelectedNode.Nodes.count = 0 Then 目录树1的节点为0时,增加目录树1选择的节点到nds1里,矛盾嘛不是。。。 Dim nds2 As New List(of winform.treenode) If tr2.SelectedNode.Nodes.count = 0 Then nds2.add(tr2.SelectedNode) Else nds2.addrange(tr2.SelectedNode.nodes) End If For Each nd1 As WinForm.TreeNode In nds1 For Each nd2 As winform.treenode In nds2 dr = DataTables("授权").Find("权限 = \'" & nd2.Text & "\'") Dim nms As New List(of String) nms.Addrange(dr("用户").trim(",").split(",")) Dim nm As String = nd1.Text.trim("←") If tr2.SelectedNode.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 If nd2.Checked <> tr2.SelectedNode.Checked Then nd2.Checked = tr2.SelectedNode.Checked End If dr("用户") = (String.Join(",",nms.ToArray)).trim(",") Next Next End If [此贴子已经被作者于2012-2-26 10:58:16编辑过]
|
-- 作者:狐狸爸爸 -- 发布时间:2012/2/26 11:10:00 -- 当时看不懂,当时就应该问,现在这么久了,突然贴出一段代码,我哪里还记得是什么意思啊? 1、触发事件的节点和选择的节点是两回事,就像触发事件的行和选择的行,是两回事一样。 2、下面的代码不矛盾,意思是选定节点没有子节点的话,将选定节点本身加入到集合,如果他有子节点的话,将他的所有子节点加入集合。
If tr1.SelectedNode.Nodes.count = 0 Then |
-- 作者:gaoyong30000 -- 发布时间:2012/2/26 11:30:00 -- 当时感觉太复杂了 没想劳烦您啊 If tr2.SelectedNode.Nodes.count = 0 Then 这段代码 红色部分 我改成了 allnodes 貌似没用啊 还是出错
但是点击第二层,例如:A卡管理 子节点会全部选择 相应表里 也会更新
![]() ![]() [此贴子已经被作者于2012-2-26 13:03:48编辑过]
|
-- 作者:gaoyong30000 -- 发布时间:2012/2/26 13:47:00 -- Dim tr1 As WinForm.TreeView = e.Form.Controls("TreeView1")
最终代码 老大帮忙看下 是否有问题~~ [此贴子已经被作者于2012-2-26 15:20:42编辑过]
|
-- 作者:gaoyong30000 -- 发布时间:2012/2/27 9:53:00 -- 最终代码 老大帮忙看下 是否有问题~~ |