苏州三木软件科技有限公司

 找回密码
 立即注册
搜索
热搜: 活动
查看: 1109|回复: 3

按用户权限控制显示系统右键菜单

[复制链接]

10

主题

24

帖子

92

积分

注册会员

Rank: 2

积分
92
发表于 2022-11-26 14:26:14 | 显示全部楼层 |阅读模式
按用户权限控制是否显示系统右键菜单,在系统登录事件的AfterConfirm事件中添加下面的代码,是否可行?
如果可行,建议在Ini.mdb的SysGridContextMenu表中增加一个Visible字段,让开发者更加灵活的控制是否显示右键菜单。
  1. //定义项目项目本地数据库文件路径
  2. string filename = Path.Combine(Proj.ProjectPath,"Release\\Data\\Ini.mdb");
  3. //判断数据库文件是否存在
  4. if(File.Exists(filename))
  5. {
  6.         string strConnDB = "Data Source = " + filename + ";Pooling=true;FailIfMissing=false";
  7.         string strDbName = "IniDB";
  8.         // 判断当前数据工厂中是否包含此数据源,如果包含此数据源则删除
  9.         if (Proj.SysDataFactory.Contains(strDbName))
  10.         {
  11.                 Proj.SysDataFactory.Delete(strDbName);// 删除指定名称的数据源
  12.         }
  13.         // 动态添加数据源
  14.         Database db = Proj.SysDataFactory.Add(strDbName, strConnDB, SourceTypeEnum.SQLite, false);
  15.         //如果用户的角色名称不包含"数据分析员"则修改菜单分组名,让菜单名不显示
  16.         if (Proj.User.RoleNames.Contains("数据分析员")==false)
  17.         {
  18.                 //修改右键菜单的分组名称,让该右键菜单不显示出来
  19.                 db.ExecuteNonQuery(" UPDATE SysGridContextMenu SET GridArea ='AAAColumn' where MenuName='数据透视表...'");
  20.         }
  21.         else
  22.         {
  23.                 //修改会系统默认的菜单分组名,让菜单显示出来
  24.                 db.ExecuteNonQuery(" UPDATE SysGridContextMenu SET GridArea ='Column' where MenuName='数据透视表...'");
  25.         }
  26.         //关闭数据源
  27.         db.Close();
  28.         //删除此数据源
  29.         Proj.SysDataFactory.Delete(db.Name);
  30. }
复制代码



回复

使用道具 举报

22

主题

296

帖子

1876

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1876
QQ
发表于 2022-11-26 15:02:04 | 显示全部楼层
如果想控制表右键菜单的话,可以考虑在系统选项中打开“自定义表右键菜单”开关,然后自己在:开发设计——代码相关——表右键菜单管理中自定义系统的右键菜单。
这里默认的就是拷贝的Ini.mdb中的SysGridContextMenu表到项目文件中。如果表数据没有同步的话,自己同步一下。然后自己随便改就可以了。
这里的逻辑是,如果我们没有设置系统选项“自定义表右键菜单”,则默认从Ini.mdb读取设置自动设置表的右键菜单。如果设置了系统选项“自定义表右键菜单”开关为True,则默认到项目文件里面(数据源可以通过Proj.SysDataFactory("ProjectsFile")来获取)的SysGridContextMenu表读取相应的设置。理论上你是可以随便自定义的。

另外,想引用Ini.mdb数据源的话,直接可以通过Proj.DatabaseForNativeIni来访问,不用自己动态创建再删除。
回复

使用道具 举报

10

主题

24

帖子

92

积分

注册会员

Rank: 2

积分
92
 楼主| 发表于 2022-11-26 15:38:38 | 显示全部楼层
admin 发表于 2022-11-26 15:02
如果想控制表右键菜单的话,可以考虑在系统选项中打开“自定义表右键菜单”开关,然后自己在:开发设计—— ...

系统选项中打开“自定义表右键菜单”开关,然后自己在:开发设计——代码相关——表右键菜单管理中自定义系统的右键菜单,用这个方法右键菜单报错,数据库也同步了不懂哪里有问题,建议写个示例到帮助文档中。
回复

使用道具 举报

22

主题

296

帖子

1876

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1876
QQ
发表于 2022-11-26 21:24:31 | 显示全部楼层
我是测试了没有问题的。你是把父子关系给修改乱了吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|苏州三木软件科技有限公司 ( 苏ICP备2022038390号 )

苏公网安备 32058502010732号

GMT+8, 2024-7-7 21:20 , Processed in 0.068223 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表