以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教菜单权限授权问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=97750)

--  作者:乡里出城
--  发布时间:2017/3/17 18:39:00
--  请教菜单权限授权问题

只在菜单权限表里的菜单名填写,执行下面代码就成功授权,但同时在分组名里填写后,授权就不成功,下面红色的代码的逻辑不知道怎么写才正确,麻烦指导一下,谢谢!

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


For Each dr As DataRow In DataTables("
菜单权限表").Select("分组 = \'" & user.name & "\'" )
    If dr.IsNull("
分组名") Then
        RibbonTabs(dr("
菜单名")).Visible =  dr("可见")
        RibbonTabs(dr("
菜单名")).Enabled = dr("可用")

    ElseIf dr.IsNull("按钮名") Then
        RibbonTabs(dr("
菜单名")).Groups(dr("分组名")).Visible =  dr("可见")
        RibbonTabs(dr("
菜单名")).Groups(dr("分组名")).Enabled =  dr("可用")
    Else
        RibbonTabs(dr("
菜单名")).Groups(dr("分组名")).Items(dr("按钮名")).Visible =  dr("可见")
        RibbonTabs(dr("
菜单名")).Groups(dr("分组名")).Items(dr("按钮名")).Enabled =  dr("可用")
    End If
Next

[此贴子已经被作者于2017/3/17 18:39:38编辑过]

--  作者:有点蓝
--  发布时间:2017/3/17 20:22:00
--  
截图看看代码编辑器里的菜单层次和表里存储的数据
--  作者:乡里出城
--  发布时间:2017/3/18 9:21:00
--  

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

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

--  作者:有点蓝
--  发布时间:2017/3/18 10:07:00
--  
For Each dr As DataRow In DataTables("菜单权限表").Select("分组 = \'" & user.name & "\' and 菜单名 is not null" )
    If dr.IsNull("分组名") Then
        RibbonTabs(dr("菜单名")).Visible =  dr("可见")
        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

--  作者:乡里出城
--  发布时间:2017/3/18 10:47:00
--  

我之前也这样写过,执行也不行,现按你的代码执行还是不成功,如图3

 


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

--  作者:有点蓝
--  发布时间:2017/3/18 11:06:00
--  
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

--  作者:乡里出城
--  发布时间:2017/3/18 14:48:00
--  

还是不行,结果为图4


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


--  作者:有点蓝
--  发布时间:2017/3/18 15:36:00
--  

能不能自己学会分析理解一下代码呢?

 

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


--  作者:乡里出城
--  发布时间:2017/3/18 16:13:00
--  
我试过这样写代码,但是执行还是授权不成功啊
--  作者:有点蓝
--  发布时间:2017/3/18 16:27:00
--  
上传项目说明