Foxtable(狐表)用户栏目专家坐堂 → [求助]菜单隐藏及是否可用


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

主题:[求助]菜单隐藏及是否可用

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


加好友 发短信
等级:四尾狐 帖子:812 积分:6688 威望:0 精华:0 注册:2014/11/26 12:32:00
[求助]菜单隐藏及是否可用  发帖心情 Post By:2018/7/19 14:56:00 [只看该作者]

LoadUserSetting

 

'菜单权限表,下面代码,怎么修改实现对菜单及菜单按钮权限控制?求助


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 i As object In QAT.Items
    i.visible = True
    i.Enabled = True
Next 
For Each i As object In ConfigBar.Items
    i.visible = True
    i.Enabled = True
Next 


'For Each dr As DataRow In DataTables("菜单权限表").Select("用户分组 = '" & _UserGroup & "' and 用户名 = '" & _UserName & "'")
For Each dr As DataRow In DataTables("菜单权限表").Select("用户名 = '" & _UserName & "'")
  If dr("菜单分区")= "功能区"  Then
      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
    End If
Next


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


加好友 发短信
等级:四尾狐 帖子:812 积分:6688 威望:0 精华:0 注册:2014/11/26 12:32:00
  发帖心情 Post By:2018/7/19 14:57:00 [只看该作者]

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


图片点击可在新窗口打开查看此主题相关图片如下:对菜单及按钮 授权.png
图片点击可在新窗口打开查看
上面代码修改后,可能要加到  用户登录 窗口的确定按钮吧?
[此贴子已经被作者于2018/7/19 15:46:13编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/19 15:45:00 [只看该作者]

代码我测试没问题。你遇到什么问题?

 

如果是自己做的用户管理,你要把代码写到登陆窗口的登陆按钮的click事件才对。


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


加好友 发短信
等级:四尾狐 帖子:812 积分:6688 威望:0 精华:0 注册:2014/11/26 12:32:00
回复:(有点甜)代码我测试没问题。你遇到什么问题?...  发帖心情 Post By:2018/7/19 17:16:00 [只看该作者]

上面代码代码写到登陆窗口的登陆按钮的click事件可以

但是在实际项目里,放在里面报错

 


图片点击可在新窗口打开查看此主题相关图片如下:小李 密码 f 登陆后窗口报错.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:小李 密码 f 登陆后窗口报错.zip


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/19 17:31:00 [只看该作者]

Dim UserName As String = e.Form.Controls("UserName").Value
Dim cmd As New SQLCommand
Dim dt As DataTable
Dim dr As DataRow
cmd.ConnectionName = "database"
If UserName = ""  Then
    Messagebox.show("请选择用户!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
End If
cmd.CommandText = "Select * From {Users} Where [Name] = '" & UserName & "'"
dt = cmd.ExecuteReader
If dt.DataRows.Count = 0 Then
    Messagebox.show("此用户不存在!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
End If
dr = dt.DataRows(0)
If MD5Encrypt(e.Form.Controls("PassWord").Value) = dr("Password") Then
    _UserName = UserName
    _UserGroup = dr("Group")
   
    '② 记录最后一次成功登陆Name_确定_Click
    Dim yhm As WinForm.ComboBox = e.Form.Controls("UserName")
    Dim mm As WinForm.TextBox = e.Form.Controls("PassWord")
   
    SaveConfigValue("Name" & ComputerId,yhm.value)  '② 记录最后一次成功登陆Name_确定_Click
    e.Form.Close
Else
    Messagebox.show("密码错误!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
End If

''fxz 自定义用户与权限管理之一
'If _UserGroup = "经理" Then
'DataTables("工作日志").LoadFilter = ""
'Else
'DataTables("工作日志").LoadFilter = "创建者 = '" & _UserName & "'"
'End If
'DataTables("工作日志").Load()
'
''fxz 自定义用户与权限管理之一
'If _UserGroup = "经理" Then
'DataTables("室内设计项目").LoadFilter = ""
'Else
'DataTables("室内设计项目").LoadFilter = "项目参与人 like '%" & _UserName & "%'"
'End If
'DataTables("室内设计项目").Load()
'
'fxz 自定义用户与权限管理之一  培训管理窗口--这个窗口没有了,可删
'If _UserGroup = "经理" Or _UserGroup = "文员" Or _UserGroup = "项目管理办公室" Then
'DataTables("培训管理").LoadFilter = ""
'Else
''DataTables("培训管理").LoadFilter = "参与部门 = '" & _UserGroup & "' or 参与部门 like '%," & _UserGroup & "' or 参与部门 like '" & _UserGroup & ",%'"
'DataTables("培训管理").LoadFilter = "参与部门 like '%" & _UserGroup & "%'"
'End If
'DataTables("培训管理").Load()
'

If SystemMenu Then
    Syscmd.Project.OpenUserMenu()
End If
''菜单权限表,只需下面2段代码
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 i As object In QAT.Items
    i.visible = True
    i.Enabled = True
Next
For Each i As object In ConfigBar.Items
    i.visible = True
    i.Enabled = True
Next


'For Each dr1 As DataRow In DataTables("菜单权限表").Select("用户分组 = '" & _UserGroup & "' and 用户名 = '" & _UserName & "'")
For Each dr1 As DataRow In DataTables("菜单权限表").Select("用户名 = '" & _UserName & "'")
    If dr1("菜单分区")= "功能区"  Then
        If dr1.IsNull("分组名")  Then
            RibbonTabs(dr1("菜单名")).Visible = Not dr1("菜单不可见")
            RibbonTabs(dr1("菜单名")).Enabled = Not dr1("菜单不可用")
        ElseIf dr1.IsNull("按钮名")   Then
            RibbonTabs(dr1("菜单名")).Groups(dr1("分组名")).Visible = Not dr1("分组不可见")
            RibbonTabs(dr1("菜单名")).Groups(dr1("分组名")).Enabled = Not dr1("分组不可用")
        Else
            RibbonTabs(dr1("菜单名")).Groups(dr1("分组名")).Items(dr1("按钮名")).Visible = Not dr1("按钮不可见")
            RibbonTabs(dr1("菜单名")).Groups(dr1("分组名")).Items(dr1("按钮名")).Enabled = Not dr1("按钮不可用")
        End If
    End If
Next


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


加好友 发短信
等级:四尾狐 帖子:812 积分:6688 威望:0 精华:0 注册:2014/11/26 12:32:00
回复:(有点甜)Dim UserName As String = e.Form.Co...  发帖心情 Post By:2018/7/19 18:10:00 [只看该作者]

上面代码用在上面的项目中ok了,

但是在实际项目中,还出现下面报错如下图(Button6就是登陆窗口 确定按钮)

实际项目窗口设计按帮助文件:界面导航设计方案


图片点击可在新窗口打开查看此主题相关图片如下:还报错.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2018/7/19 18:19:18编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/19 20:16:00 [只看该作者]

1、这个代码你加上了没有?

 

If SystemMenu Then
    Syscmd.Project.OpenUserMenu()
End If

2、加入msgbox,定位一下出错的代码的位置

 

http://www.foxtable.com/webhelp/scr/1485.htm

 


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


加好友 发短信
等级:四尾狐 帖子:812 积分:6688 威望:0 精华:0 注册:2014/11/26 12:32:00
回复:(有点甜)1、这个代码你加上了没有??...  发帖心情 Post By:2018/7/19 23:42:00 [只看该作者]

 For Each i As object In ConfigBar.Items
    i.visible = True
    i.Enabled = True
Next

MessageBox.Show(2)————只提示1次 2

'For Each dr1 As DataRow In DataTables("菜单权限表").Select("用户分组 = '" & _UserGroup & "' and 用户名 = '" & _UserName & "'")
For Each dr1 As DataRow In DataTables("菜单权限表").Select("用户名 = '" & _UserName & "'")
MessageBox.Show(3)
    If dr1("菜单分区")= "功能区"  Then
        If dr1.IsNull("分组名")  Then
            RibbonTabs(dr1("菜单名")).Visible = Not dr1("菜单不可见")
            RibbonTabs(dr1("菜单名")).Enabled = Not dr1("菜单不可用")
        ElseIf dr1.IsNull("按钮名")   Then
            RibbonTabs(dr1("菜单名")).Groups(dr1("分组名")).Visible = Not dr1("分组不可见")
            RibbonTabs(dr1("菜单名")).Groups(dr1("分组名")).Enabled = Not dr1("分组不可用")
        Else
            RibbonTabs(dr1("菜单名")).Groups(dr1("分组名")).Items(dr1("按钮名")).Visible = Not dr1("按钮不可见")
            RibbonTabs(dr1("菜单名")).Groups(dr1("分组名")).Items(dr1("按钮名")).Enabled = Not dr1("按钮不可用")
        End If
    End If
Next
MessageBox.Show(3)————提示8次 3
实际项目窗口设计按帮助文件:界面导航设计方案,用了8个功能区菜单名
[此贴子已经被作者于2018/7/19 23:43:17编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/20 0:05:00 [只看该作者]

1、最后一个msgbox是否弹出?

 

2、如果弹出,说明不是这段代码的问题,这段代码看着也不会报错。


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


加好友 发短信
等级:四尾狐 帖子:812 积分:6688 威望:0 精华:0 注册:2014/11/26 12:32:00
回复:(有点甜)1、最后一个msgbox是否弹出??...  发帖心情 Post By:2018/7/20 9:48:00 [只看该作者]

For Each i As object In ConfigBar.Items
    i.visible = True
    i.Enabled = True
Next

'For Each dr1 As DataRow In DataTables("菜单权限表").Select("用户分组 = '" & _UserGroup & "' and 用户名 = '" & _UserName & "'")
For Each dr1 As DataRow In DataTables("菜单权限表").Select("用户名 = '" & _UserName & "'")
MessageBox.Show(3)
    If dr1("菜单分区")= "功能区"  Then
        If dr1.IsNull("分组名")  Then
            RibbonTabs(dr1("菜单名")).Visible = Not dr1("菜单不可见")
            RibbonTabs(dr1("菜单名")).Enabled = Not dr1("菜单不可用")
        ElseIf dr1.IsNull("按钮名")   Then
            RibbonTabs(dr1("菜单名")).Groups(dr1("分组名")).Visible = Not dr1("分组不可见")
            RibbonTabs(dr1("菜单名")).Groups(dr1("分组名")).Enabled = Not dr1("分组不可用")
        Else
            RibbonTabs(dr1("菜单名")).Groups(dr1("分组名")).Items(dr1("按钮名")).Visible = Not dr1("按钮不可见")
            RibbonTabs(dr1("菜单名")).Groups(dr1("分组名")).Items(dr1("按钮名")).Enabled = Not dr1("按钮不可用")
        End If
    End If
Next
MessageBox.Show(3)————提示1次下图这个窗口,点击确定按钮后才能登陆进去系统,怎么取消不显示下图的窗口呢?

实际项目窗口设计按帮助文件:界面导航设计方案


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

[此贴子已经被作者于2018/7/20 9:48:37编辑过]

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