Foxtable(狐表)用户栏目专家坐堂 → 关于窗口菜单的权限控制


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

主题:关于窗口菜单的权限控制

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


加好友 发短信
等级:二尾狐 帖子:564 积分:4561 威望:0 精华:0 注册:2016/4/17 20:05:00
关于窗口菜单的权限控制  发帖心情 Post By:2017/10/14 12:13:00 [只看该作者]

老师,我参照目录树授权管理的界面,做了一个权限控制,如果向下面一样控制权限,很麻烦,有没更简便的方法?
If Functions.Execute("ShouQuan","信息识别组","新增") Then
 e.Form.Strips("主菜单").Items("新增").enabled = True ‘好像这样写起不到控制效果。
End If
菜单里的所有名称也就是MenuItems名称


图片点击可在新窗口打开查看此主题相关图片如下:12.jpg
图片点击可在新窗口打开查看



[此贴子已经被作者于2017/10/14 12:13:47编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110561 积分:562695 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/10/14 14:00:00 [只看该作者]

1、只能这样控制

2、代码测试没有问题,检查授权函数返回的结果是否正确

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


加好友 发短信
等级:二尾狐 帖子:564 积分:4561 威望:0 精华:0 注册:2016/4/17 20:05:00
  发帖心情 Post By:2017/10/14 15:04:00 [只看该作者]

内部函数Shouquan返回结果都是true,这个代码怎么测试都对窗口菜单无效,不知道哪出问题了。不过对窗口标准控件却是有效的,蓝老师,帮忙看一下到底哪出问题了。

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110561 积分:562695 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/10/14 15:47:00 [只看该作者]

请上传实例测试

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


加好友 发短信
等级:二尾狐 帖子:564 积分:4561 威望:0 精华:0 注册:2016/4/17 20:05:00
  发帖心情 Post By:2017/10/14 16:15:00 [只看该作者]

项目文件太大,不方便上传啊,蓝老师看一下示例的的自定义函数ShouQuan有没有哪有问题?
If User.Type =  UserTypeEnum.User Then ' 如果是开发者或者管理员
    Return True '则具备所有权限
End If
Dim dt As DataTable = DataTables("授权")
Dim dr As DataRow
'首先判断分组的授权用户是否包括此用户或此用户所属的分组
dr = dt.Find("分组 = '" & args(0) & "' And 权限 Is Null" )
If dr Is Nothing  Then
    MessageBox.show("不存在名为""" & args(0) & "分组!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return False
End If
If dr.IsNull("用户") = False Then
    Dim nms() As String = dr("用户").Split(",")
    For Each nm As String In nms
        If nm = User.Group OrElse nm = User.Name Then '如果授权用户包括登录用户所属的分组或其用户名
            Return True '返回True
        End If
    Next
End If
'然后判断权限的授权用户是否包括此用户或此用户所属的分组
If Args(1) = "" Then
    Return  False
End If
dr = dt.Find("分组 = '" & args(0) & "' And 权限 = '" & args(1) & "'")
If dr Is Nothing  Then
    MessageBox.show("不存在名为""" & args(1) & "权限!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return False
End If
If dr.IsNull("用户") = False Then
    Dim nms() As String = dr("用户").Split(",")
    For Each nm As String In nms
        If nm = User.Group OrElse nm = User.Name Then '如果授权用户包括登录用户所属的分组或其用户名
            Return True '返回True
        End If
    Next
End If
Return True

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110561 积分:562695 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/10/14 16:25:00 [只看该作者]

如果能够返回true就不是函数的问题

新建项目做例子,不是上传整个项目

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


加好友 发短信
等级:二尾狐 帖子:564 积分:4561 威望:0 精华:0 注册:2016/4/17 20:05:00
  发帖心情 Post By:2017/10/14 17:00:00 [只看该作者]

这是示例文件哦
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:示例目录树形式的授权.foxdb

[此贴子已经被作者于2017/10/14 17:01:38编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110561 积分:562695 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/10/14 17:11:00 [只看该作者]

应该这样用:

e.Form.Strips("主菜单").Items("新增").enabled = Functions.Execute("ShouQuan","信息识别组","新增")'好像这样写起不到控制效果.


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


加好友 发短信
等级:二尾狐 帖子:564 积分:4561 威望:0 精华:0 注册:2016/4/17 20:05:00
  发帖心情 Post By:2017/10/14 17:59:00 [只看该作者]

蓝老师,这种如何控制啊?
图片点击可在新窗口打开查看此主题相关图片如下:1234.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:婴狐 帖子:26 积分:270 威望:0 精华:0 注册:2017/9/9 11:26:00
  发帖心情 Post By:2017/10/30 11:41:00 [只看该作者]

怎么打开这个文件?

 


 回到顶部
总数 12 1 2 下一页