以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 目标树形式的授权人员生成目录树代码问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=46810) |
-- 作者:supwork -- 发布时间:2014/2/27 22:34:00 -- 目标树形式的授权人员生成目录树代码问题 官方代码:
授权_AfterLoad
Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1") Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2") trv1.BuildTree("授权","分组|权限") For Each u As UserInfo In Users If u.Type = UserTypeEnum.User Then \'排除管理员和开发者 If trv2.Nodes.Contains(u.Group) = False Then trv2.Nodes.Add(u.Group) End If trv2.Nodes(u.Group).Nodes.Add(u.Name) End If Next Trv1.Nodes(0).Expand() trv2.ExpandAll()
该段代码执行的时候,如果系统有用户未指定用户分组时,则程序执行会报错。
如果代码修正为:
Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
加上已上判断,程序运行不会报错。程序正常运行,但未分组用户不能显示在目录树中,从而不能进行授权。 此时能否做到,将分组为空的用户 ,全部自动归纳到“未分组”用户中,从而能进行用户授权。 |
-- 作者:有点甜 -- 发布时间:2014/2/27 22:39:00 -- 改成这样 Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1") Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2") trv1.BuildTree("授权","分组|权限") For Each u As UserInfo In Users If u.Group = "" group = "未分组" Else group = u.Group End If If u.Type = UserTypeEnum.User Then If trv2.Nodes.Contains(group) = False Then trv2.Nodes.Add(group) End If trv2.Nodes(group).Nodes.Add(u.Name) End If Next Trv1.Nodes(0).Expand() trv2.ExpandAll() [此贴子已经被作者于2014-2-27 22:39:39编辑过]
|
-- 作者:supwork -- 发布时间:2014/2/27 23:12:00 -- 谢谢 但是运行不成功
系统报错 未定义变量 group
加上 Dim group As String
编辑窗口可以通过验证关闭。
但窗口打开时,运行还是提示错误,用户分给为空的用户,还是没有归到“未分组”中,也就还没有显示。 |
-- 作者:supwork -- 发布时间:2014/2/27 23:19:00 -- 奇怪: 我修改之前的代码,总是如上所说。
但我复制2 楼的代码。再加上Dim group As String 执行正确。达到了效果 |
-- 作者:supwork -- 发布时间:2014/2/27 23:26:00 -- 正确可行代码:
Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1") |
-- 作者:lsy -- 发布时间:2014/2/28 7:22:00 -- 好,顶一个。 |
-- 作者:supwork -- 发布时间:2014/2/28 8:11:00 -- 进一步,询问一下:该例子中有“增加分类”,“增加授权”,“重命名”,“删除”,双击即可修改功能,授权功能。其实只有授权功能普通经授权用户可以使用的,“增加分类”,“增加授权”,“重命名”,“删除”,双击即可修改功能,只有开发者才能合使用,修改变动了,在程序中要修改授权代码了。
请问如何做到,非开发者登陆,只能使用授权功能。而其它按钮均变灰色显示(操作无效模式)。 |
-- 作者:Bin -- 发布时间:2014/2/28 8:19:00 -- 不就是多加一个判断,的事吗? If User.Type = UserTypeEnum.User Then 就设置控件的 Enabled 属性
|
-- 作者:supwork -- 发布时间:2014/2/28 23:35:00 -- 恩,看起来的确简单,但再简单的代码用得恰到好处可以解决大问题,真心希望官方放出来的实例,代码逻辑控制严密 。不仅仅是功能的简单注释,希望更有实际价值,在所有的情况下均不报错,有极强的容错功能。 |