以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]狐爸,现在编写通过多值字段的用户分组来控制用户菜单显示太难了,希望能下次更新时,能增加这个功能  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=30190)

--  作者:lipiti
--  发布时间:2013/3/22 14:50:00
--  [求助]狐爸,现在编写通过多值字段的用户分组来控制用户菜单显示太难了,希望能下次更新时,能增加这个功能
如何使用多值字段的用户分组来控制用户菜单显示


图片点击可在新窗口打开查看此主题相关图片如下:如何使用多值字段的用户分组来控制用户菜单显示.png
图片点击可在新窗口打开查看


以下代码可以实现内置用户权限管理的单个用户分组来控制用户菜单显示,
如何修成成自定义用户权限管理的多值字段的用户分组来控制用户菜单显示。

For Each rt As RibbonMenu.Tab In RibbonTabs
    rt.Visible = True
    rt.Enabled = True
    For Each rg As RibbonMenu.Group In rt.Groups
        rg.Visible = True
        rg.Enabled = True
        For Each itm As RibbonMenu.RibbonItem In rg.Items
            itm.Visible = True
            itm.Enabled = True
        Next
    Next
Next

For Each dr As DataRow In DataTables("菜单权限表").Select("分组 = \'" & User.Group & "\'" )
    If dr.IsNull("分组名") Then
        RibbonTabs(dr("菜单名")).Visible = Not dr("不可见")
        RibbonTabs(dr("菜单名")).Enabled = Not dr("不可用")
    ElseIf dr.IsNull("按钮名") Then
        RibbonTabs(dr("菜单名")).Groups(dr("分组名")).Visible = Not dr("不可见")
        RibbonTabs(dr("菜单名")).Groups(dr("分组名")).Enabled = Not dr("不可用")
    Else
        RibbonTabs(dr("菜单名")).Groups(dr("分组名")).Items(dr("按钮名")).Visible = Not dr("不可见")
        RibbonTabs(dr("菜单名")).Groups(dr("分组名")).Items(dr("按钮名")).Enabled = Not dr("不可用")
    End If
Next


附件程序的用户名为:admin  密码:admin

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:权限与菜单管理.table



[此贴子已经被作者于2013-3-23 10:01:51编辑过]

--  作者:kmylar
--  发布时间:2013/3/22 15:09:00
--  

看看!


--  作者:狐狸爸爸
--  发布时间:2013/3/22 15:55:00
--  

1、代码放在自定义登陆窗口的确定按钮中

2、代码中User.Group 改为 _UserGrop


--  作者:lipiti
--  发布时间:2013/3/22 16:11:00
--  
按照狐爸说的:

1、代码放在自定义登陆窗口的确定按钮中

2、代码中User.Group 改为 _UserGrop

代码如下:

Dim user As String = e.Form.Controls("UserName").Text
Dim pwd As String = e.Form.Controls("PassWord").Text
Dim dr As DataRow = DataTables("员工信息").Find("员工姓名 = \'" & user & "\'")   \'分开查询,防注入登录
If dr IsNot Nothing Then
    pwd = MD5Encrypt (pwd)
    If user = dr("员工姓名") Then
        If dr("员工状态") = "在职" Then
            If pwd = dr("员工密码") Then
            _UserName = dr("员工姓名")
            _UserLoginName = user
            _UserGroup = dr("公司职位")
            e.Form.Close ()
            Else
                Messagebox .Show ("输入的账号或密码错误,请重试!","提示", MessageBoxButtons .OK ,MessageBoxIcon . Information)
            End If
        Else
            Messagebox .Show ("输入的账号或密码错误,请重试!","提示", MessageBoxButtons .OK ,MessageBoxIcon . Information)
        End If
    Else
        Messagebox .Show ("输入的账号或密码错误,请重试!","提示", MessageBoxButtons .OK ,MessageBoxIcon . Information)
    End If
Else
    Messagebox .Show ("输入的账号或密码错误,请重试!","提示", MessageBoxButtons .OK ,MessageBoxIcon . Information)
End If

For Each rt As RibbonMenu . Tab In RibbonTabs
    rt .Visible = True
    rt .Enabled = True
    For Each rg As RibbonMenu . Group In rt .Groups
        rg .Visible = True
        rg .Enabled = True
        For Each itm As RibbonMenu . RibbonItem In rg .Items
            itm .Visible = True
            itm .Enabled = True
        Next
    Next
Next

For Each dr As DataRow In DataTables ("菜单管理" ). Select( "公司职位 = \'" & _UserGroup & "\'" ) 
    If dr .IsNull ( "Groups名称" ) Then
        RibbonTabs (dr ("RibbonTabs名称" )). Visible = Not dr ("隐藏" )
        RibbonTabs (dr ("RibbonTabs名称" )). Enabled = Not dr ("禁用" )
    ElseIf dr .IsNull ( "Items名称" ) Then
        RibbonTabs (dr ("RibbonTabs名称" )). Groups( dr ("Groups名称" )). Visible = Not dr ("隐藏" )
        RibbonTabs (dr ("RibbonTabs名称" )). Groups( dr ("Groups名称" )). Enabled = Not dr ("禁用" )
    Else
        RibbonTabs (dr ("RibbonTabs名称" )). Groups( dr ("Groups名称" )). Items( dr ("Items名称" )). Visible = Not dr ("隐藏" )
        RibbonTabs (dr ("RibbonTabs名称" )). Groups( dr ("Groups名称" )). Items( dr ("Items名称" )). Enabled = Not dr ("禁用" )
    End If
Next


点提交时出现以下错误提示:


此主题相关图片如下:2013-03-22_16-09-04.png
按此在新窗口浏览图片


--  作者:ybil
--  发布时间:2013/3/22 16:13:00
--  
For Each dr  In DataTables ("菜单管理" ). Select( "公司职位 = \'" & _UserGroup & "\'" ) 
--  作者:lipiti
--  发布时间:2013/3/22 17:18:00
--  
ybil 版主,我把代码改成 
For Each dr  In DataTables ("菜单管理" ). Select( "公司职位 = \'" & _UserGroup & "\'" ) 


在系统登录时出现以下错误提示:


此主题相关图片如下:2013-03-22_17-14-27.png
按此在新窗口浏览图片


--  作者:ybil
--  发布时间:2013/3/22 17:26:00
--  
提示很清楚: [菜单管理]没[Groups名称]列
--  作者:lipiti
--  发布时间:2013/3/22 17:42:00
--  
谢谢【ybil】和【muhua】的指导,现在没有提示错误了,但设置了隐藏和禁用的,还是会显示出来的。
--  作者:lipiti
--  发布时间:2013/3/22 22:52:00
--  
有那位高手能解吗?
--  作者:lipiti
--  发布时间:2013/3/23 9:59:00
--  
狐爸,现在编写通过多值字段的用户分组来控制用户菜单显示太难了,希望能下次更新时,能增加这个功能