新增菜单窗体没有显示也不能导入菜单解决方案 - MenuItemTag详解
作者:C/S框架网|www.cscode.ne  发布日期:2021-06-28 20:05:00
  新增菜单窗体没有显示也不能导入菜单解决方案 - MenuItemTag详解

新增菜单窗体没有显示也不能导入菜单解决方案 - MenuItemTag详解


新增菜单窗体没有显示也不能导入菜单解决方案, 包括:

1. 分配菜单权限

2. MenuItemTag详解

3. MenuType详解



解决方案:


1. 打开当前模块主窗体frmModuleMain.cs文件,检查SetMenuTage方法, 必须指定菜单的权限值(窗体最大可用权限):


C# Code:

/// <summary>
/// 定义菜单与窗体的功能权限。
/// </summary>
private void SetMenuTag()
{
  
  
//新增的菜单功能,必须指定权限值
  
menuDynamicReport.Tag = new MenuItemTag(MenuType.DataForm, (int)CSFrameworkV5.Interfaces.ModuleID.ReportModule, AuthorityCategory.REPORT_ACTION_VALUE);
  
}

//来源:C/S框架网 | www.csframework.com | QQ:23404761




AuthorityCategory.REPORT_ACTION_VALUE=96


2. 给新菜单对象.Tag指定权限后,重新编译,就可以导入菜单了。


菜单管理界面  用于查看软件项目内所有菜单的权限值,如下图所示:


贴图图片-导入新菜单



MenuItemTag详解


MenuItemTag类用于设置菜单的最大可用权限,也可理解为给窗体界面指定最大可用权限。



C# Code:


/// <summary>
/// 设置菜单的权限。
/// 给菜单对象的Tag属性分配此对象类型的实例,menuXXX.Tag=new MenuItemTag();
/// </summary>
public class MenuItemTag
{
  
private MenuType _type;
  
private int _moduleID;
  
private int _FormAuthorities;
  
  
/// <summary>
  
/// 构造器
  
/// </summary>
  
/// <param name="type">菜单类型</param>
  
/// <param name="moduleID">模块编号</param>
  
/// <param name="formAuthorities">窗体的可用权限</param>
  
public MenuItemTag(MenuType type, int moduleID, int formAuthorities)
  {
    _type
= type;
    _moduleID
= moduleID;
    _FormAuthorities
= formAuthorities;
    _ActionNames
= new Hashtable();
  }
  
  
private Hashtable _ActionNames = null;
  
  
/// <summary>
  
/// 当前菜单功能按钮的自定义名称(支持多个自定义名称), 扩展按钮使用
  
/// </summary>
  
public Hashtable ActionNames
  {
    
get { return _ActionNames; }
  }
  
  
/// <summary>
  
/// 设置功能菜单的功能按钮权限名称, 扩展按钮使用
  
/// </summary>
  
/// <param name="action">功能按钮编号</param>
  
/// <param name="actionName">自定义名称</param>
  
public void SetActionName(int action, string actionName)
  {
    
if (_ActionNames.ContainsKey(action))
    _ActionNames[action]
= actionName;
    
else
    _ActionNames.Add(action, actionName);
  }
  
  
/// <summary>
  
/// 菜单类型
  
/// </summary>
  
public MenuType MenuType { get { return _type; } }
  
  
/// <summary>
  
/// 模块编号
  
/// </summary>
  
public int ModuleID { get { return _moduleID; } }
  
  
/// <summary>
  
/// 窗体的可用权限
  
/// </summary>
  
public int FormAuthorities { get { return _FormAuthorities; } }
}

//来源:C/S框架网 | www.csframework.com | QQ:23404761




使用方法:


给菜单对象的Tag属性分配此对象类型的实例



C# Code:

//新增的菜单功能,必须指定权限值
   menuDynamicReport.Tag = new MenuItemTag(MenuType.DataForm, (int)CSFrameworkV5.Interfaces.ModuleID.ReportModule, AuthorityCategory.REPORT_ACTION_VALUE);

//来源:C/S框架网 | www.csframework.com | QQ:23404761





MenuType详解:开发框架支持的菜单类型。



C# Code:

/// <summary>
/// 菜单类型
/// </summary>
public enum MenuType
{
  
/// <summary>
  
/// 未知类型(未使用)
  
/// </summary>
  
Unknow = 0,
  
  
/// <summary>
  
/// 模块主菜单(模块的一级菜单)
  
/// </summary>
  
Module = 1, //
  

  
/// <summary>
  
/// 数据窗体菜单
  
/// </summary>
  
DataForm = 2,
  
  
/// <summary>
  
/// 父级菜单(下面有子菜单)
  
/// </summary>
  
ItemOwner = 3,
  
  
/// <summary>
  
/// 报表菜单
  
/// </summary>
  
Report = 4,
  
  
/// <summary>
  
/// 独立功能(用于扩展)
  
/// </summary>
  
Action = 5,
  
  
/// <summary>
  
/// 对话框
  
/// </summary>
  
Dialog = 6
}


//来源:C/S框架网 | www.csframework.com | QQ:23404761





C/S框架网|原创精神.创造价值.打造精品


扫一扫加作者微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务
上一篇 下一篇