|
按用户权限控制是否显示系统右键菜单,在系统登录事件的AfterConfirm事件中添加下面的代码,是否可行?
如果可行,建议在Ini.mdb的SysGridContextMenu表中增加一个Visible字段,让开发者更加灵活的控制是否显示右键菜单。
- //定义项目项目本地数据库文件路径
- string filename = Path.Combine(Proj.ProjectPath,"Release\\Data\\Ini.mdb");
- //判断数据库文件是否存在
- if(File.Exists(filename))
- {
- string strConnDB = "Data Source = " + filename + ";Pooling=true;FailIfMissing=false";
- string strDbName = "IniDB";
- // 判断当前数据工厂中是否包含此数据源,如果包含此数据源则删除
- if (Proj.SysDataFactory.Contains(strDbName))
- {
- Proj.SysDataFactory.Delete(strDbName);// 删除指定名称的数据源
- }
- // 动态添加数据源
- Database db = Proj.SysDataFactory.Add(strDbName, strConnDB, SourceTypeEnum.SQLite, false);
- //如果用户的角色名称不包含"数据分析员"则修改菜单分组名,让菜单名不显示
- if (Proj.User.RoleNames.Contains("数据分析员")==false)
- {
- //修改右键菜单的分组名称,让该右键菜单不显示出来
- db.ExecuteNonQuery(" UPDATE SysGridContextMenu SET GridArea ='AAAColumn' where MenuName='数据透视表...'");
- }
- else
- {
- //修改会系统默认的菜单分组名,让菜单显示出来
- db.ExecuteNonQuery(" UPDATE SysGridContextMenu SET GridArea ='Column' where MenuName='数据透视表...'");
- }
- //关闭数据源
- db.Close();
- //删除此数据源
- Proj.SysDataFactory.Delete(db.Name);
- }
复制代码
|
|