以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  【菜单授权】获取用户自己定义的菜单名、分组名、按钮名后,设置了可见与可用之后,怎么更新菜单权限呢?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=113024)

--  作者:李孝春
--  发布时间:2018/1/7 12:54:00
--  【菜单授权】获取用户自己定义的菜单名、分组名、按钮名后,设置了可见与可用之后,怎么更新菜单权限呢?
【菜单授权】获取用户自己定义的菜单名、分组名、按钮名后,设置了可见与可用之后,怎么更新菜单权限呢?
要求同步实现:
在设定之后 点应用  同步更新菜单权限显示
在用户登录之后  自动更新菜单权限
【注意】有自定义用户登录窗体,在用户自定义登录之后,希望能够匹配菜单权限表里面的设置来对应显示用户下的可见菜单项目。

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

已创建菜单权限表 ,格式如上图。

下列代码获取到菜单名 分组名  按钮名
For Each rt As RibbonMenu.Tab In RibbonTabs
    For Each rg As RibbonMenu.Group In rt.Groups
        For Each rb As Object In rg.Items
            Dim dr As DataRow = DataTables("菜单权限").AddNew()
            dr("菜单名") = rt.Name
            dr("分组名") =rg.Name
            dr("按钮名") =rb.Name
        Next
    Next
Next



有点蓝老师在论坛提供过如下代码  不知道怎么用  在命令窗口运行,直接是所有的菜单都看不见了

For i As Integer = 0 To ribbontabs.count - 1
    RibbonTabs(i).Visible = False
    For j As Integer = 0 To RibbonTabs(i).Groups .count - 1
        RibbonTabs(i).Groups (j).Visible = False
    Next
Next

For Each dr As DataRow In DataTables("菜单权限表").Select("用户名 = \'" & user.name & "\' and 菜单名 is not null" )
    If dr.IsNull("分组名") Then
        RibbonTabs(dr("菜单名")).Visible =  dr("可见")
        If dr("可见") = True Then
            For j As Integer = 0 To RibbonTabs(dr("菜单名")).Groups .count - 1
                RibbonTabs(dr("菜单名")).Groups (j).Visible = True
            Next
        End If
        RibbonTabs(dr("菜单名")).Enabled = dr("可用")
    ElseIf dr.IsNull("按钮名") Then
        RibbonTabs(dr("菜单名")).Visible = dr("可见")
        RibbonTabs(dr("菜单名")).Groups(dr("分组名")).Visible =  dr("可见")
        RibbonTabs(dr("菜单名")).Groups(dr("分组名")).Enabled =  dr("可用")
    Else
        RibbonTabs(dr("菜单名")).Visible = dr("可见")
        RibbonTabs(dr("菜单名")).Groups(dr("分组名")).Visible = dr("可见")
        RibbonTabs(dr("菜单名")).Groups(dr("分组名")).Items(dr("按钮名")).Visible =  dr("可见")
        RibbonTabs(dr("菜单名")).Groups(dr("分组名")).Items(dr("按钮名")).Enabled =  dr("可用")
    End If
Next

[此贴子已经被作者于2018/1/7 16:20:17编辑过]

--  作者:李孝春
--  发布时间:2018/1/7 16:28:00
--  回复:(李孝春)【菜单授权】获取用户自己定义的菜单...
用户名 = \'" & user.name
用户名 = \'" & _user.name
是不是这两个的不同导致的呢?

--  作者:有点甜
--  发布时间:2018/1/7 16:48:00
--  

msgbox(user.name)

msgbox(_UserName)

 

看分别弹出什么,看哪一个是正确的。


--  作者:李孝春
--  发布时间:2018/1/7 23:34:00
--  回复:(有点甜)msgbox(user.name)msgbox(_UserNam...
有点甜老师
换成了_nsername可以实现了根据不同用户实现权限菜单的显示


下面的代码放在自定义登录窗体中的  确定按钮事件代码或者项目启动后的事件代码都提示一样的错误

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

For i As Integer = 0 To ribbontabs.count - 1
    RibbonTabs(i).Visible = False
    For j As Integer = 0 To RibbonTabs(i).Groups .count - 1
        RibbonTabs(i).Groups (j).Visible = False
    Next
Next

For Each dr As DataRow In DataTables("菜单权限表").Select("用户名 = \'" & _username & "\' and 菜单名 is not null" )
    If dr.IsNull("分组名") Then
        RibbonTabs(dr("菜单名")).Visible =  dr("可见")
        If dr("可见") = True Then
            For j As Integer = 0 To RibbonTabs(dr("菜单名")).Groups .count - 1
                RibbonTabs(dr("菜单名")).Groups (j).Visible = True
            Next
        End If
        RibbonTabs(dr("菜单名")).Enabled = dr("可用")
    ElseIf dr.IsNull("按钮名") Then
        RibbonTabs(dr("菜单名")).Visible = dr("可见")
        RibbonTabs(dr("菜单名")).Groups(dr("分组名")).Visible =  dr("可见")
        RibbonTabs(dr("菜单名")).Groups(dr("分组名")).Enabled =  dr("可用")
    Else
        RibbonTabs(dr("菜单名")).Visible = dr("可见")
        RibbonTabs(dr("菜单名")).Groups(dr("分组名")).Visible = dr("可见")
        RibbonTabs(dr("菜单名")).Groups(dr("分组名")).Items(dr("按钮名")).Visible =  dr("可见")
        RibbonTabs(dr("菜单名")).Groups(dr("分组名")).Items(dr("按钮名")).Enabled =  dr("可用")
    End If
Next


--  作者:李孝春
--  发布时间:2018/1/8
--  回复:(李孝春)回复:(有点甜)msgbox(user.name)m...
我改成dr1就行了,谢谢啦!