Foxtable(狐表)用户栏目专家坐堂 → 目标树形式的授权人员生成目录树代码问题


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

主题:目标树形式的授权人员生成目录树代码问题

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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
目标树形式的授权人员生成目录树代码问题  发帖心情 Post By: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")
Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")
trv1.BuildTree("授权","分组|权限")
For Each u As UserInfo In Users
    If u.Group <> ""  ‘分组为空时过滤掉
        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
    End If
Next
Trv1.Nodes(0).Expand()
trv2.ExpandAll()

 

 

加上已上判断,程序运行不会报错。程序正常运行,但未分组用户不能显示在目录树中,从而不能进行授权。

此时能否做到,将分组为空的用户 ,全部自动归纳到“未分组”用户中,从而能进行用户授权。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2014/2/27 23:12:00 [只看该作者]

谢谢 但是运行不成功

 

系统报错 未定义变量 group

 

加上 Dim group As String

 

编辑窗口可以通过验证关闭。

 

但窗口打开时,运行还是提示错误,用户分给为空的用户,还是没有归到“未分组”中,也就还没有显示。


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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2014/2/27 23:19:00 [只看该作者]

奇怪: 我修改之前的代码,总是如上所说。

 

但我复制2 楼的代码。再加上Dim group As String 执行正确。达到了效果


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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2014/2/27 23:26:00 [只看该作者]

正确可行代码:

 

Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")
Dim group As String
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()


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


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

好,顶一个。

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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2014/2/28 8:11:00 [只看该作者]

进一步,询问一下:该例子中有“增加分类”,“增加授权”,“重命名”,“删除”,双击即可修改功能,授权功能。其实只有授权功能普通经授权用户可以使用的,“增加分类”,“增加授权”,“重命名”,“删除”,双击即可修改功能,只有开发者才能合使用,修改变动了,在程序中要修改授权代码了。

 

请问如何做到,非开发者登陆,只能使用授权功能。而其它按钮均变灰色显示(操作无效模式)。


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


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

不就是多加一个判断,的事吗?   

If User.Type = UserTypeEnum.User Then 

就设置控件的 Enabled 属性

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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2014/2/28 23:35:00 [只看该作者]

恩,看起来的确简单,但再简单的代码用得恰到好处可以解决大问题,真心希望官方放出来的实例,代码逻辑控制严密 。不仅仅是功能的简单注释,希望更有实际价值,在所有的情况下均不报错,有极强的容错功能。


 回到顶部