Devexpress Ribbon 动态生成菜单
/// <summary>
/// 动态加载菜单
/// </summary>
private void GetMenuBind()
{
//根据登录用户角色菜单动态创建
//循环创建卡菜单
DataTable baseModuleDT = BLL.BaseModule.GetDataTable("LevelNo=1", "");
for (int i = ; i < baseModuleDT.Rows.Count; i++)
{
//创建卡
RibbonPage ribbonPage = new DevExpress.XtraBars.Ribbon.RibbonPage();//菜单卡对象定义
ribbonPage.Text = baseModuleDT.Rows[i]["FullName"].ToString();
this.ribbon.Pages.Add(ribbonPage); //获取组菜单
DataTable baseModuleDTG = BLL.BaseModule.GetDataTable("ParentId=" + baseModuleDT.Rows[i]["Id"].ToString() + " and LevelNo=2", "");
if (baseModuleDTG.Rows.Count <= )
{
//没有组
RibbonPageGroup ribbonPageGroup = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();//菜单卡分组定义
ribbonPageGroup.Text = baseModuleDT.Rows[i]["FullName"].ToString();//卡片组名
ribbonPage.Groups.Add(ribbonPageGroup); DataTable baseModuleDTB = BLL.BaseModule.GetDataTable("ParentId=" + baseModuleDT.Rows[i]["Id"].ToString() + " and LevelNo=3", "");
for (int b = ; b < baseModuleDTB.Rows.Count; b++)
{ Image image = Image.FromFile(filePath + baseModuleDTB.Rows[b]["MenuIco"].ToString());//获取文件
//功能按钮
BarButtonItem barButtonItem = new DevExpress.XtraBars.BarButtonItem();
barButtonItem.Caption = baseModuleDTB.Rows[b]["FullName"].ToString();
barButtonItem.LargeGlyph = image;// global::MemberManager.Properties.Resources.group_key;
barButtonItem.Name = baseModuleDTB.Rows[b]["WinFrom"].ToString();
barButtonItem.Tag = baseModuleDTB.Rows[b]["WinFrom"].ToString().Substring(, baseModuleDTB.Rows[b]["WinFrom"].ToString().IndexOf('.'));//截取文件名点以前的
ribbonPageGroup.ItemLinks.Add(barButtonItem);
barButtonItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.barButtonItem_ItemClick);//注册事件
} }
else
{
for (int g = ; g < baseModuleDTG.Rows.Count; g++)
{
//创建组
RibbonPageGroup ribbonPageGroup = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();//菜单卡分组定义
ribbonPageGroup.Text = baseModuleDTG.Rows[g]["FullName"].ToString();//卡片组名
ribbonPage.Groups.Add(ribbonPageGroup); DataTable baseModuleDTB = BLL.BaseModule.GetDataTable("ParentId=" + baseModuleDTG.Rows[g]["Id"].ToString() + " and LevelNo=3", "");
for (int b = ; b < baseModuleDTB.Rows.Count; b++)
{
Image image = Image.FromFile(filePath + baseModuleDTB.Rows[b]["MenuIco"].ToString());//获取文件
//功能按钮
BarButtonItem barButtonItem = new DevExpress.XtraBars.BarButtonItem();
barButtonItem.Caption = baseModuleDTB.Rows[b]["FullName"].ToString();
barButtonItem.LargeGlyph = image;// global::MemberManager.Properties.Resources.group_key;
barButtonItem.Name = baseModuleDTB.Rows[b]["WinFrom"].ToString();
//barButtonItem.Tag = baseModuleDTB.Rows[b]["WinFrom"].ToString().Substring(0, baseModuleDTB.Rows[b]["WinFrom"].ToString().IndexOf('.'));//截取文件名点以前的
ribbonPageGroup.ItemLinks.Add(barButtonItem);
barButtonItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.barButtonItem_ItemClick);//注册事件
} }
} }
} /// <summary>
/// 动态调出窗体事件 注:动态调用窗体名需和数据库中名称完全一致
/// </summary>
private void barButtonItem_ItemClick(object sender, ItemClickEventArgs e)
{ if (!ShowChildrenForm(e.Item.Tag.ToString()))
{
if (this.MdiChildren.Length < childFormMaxNumber)
{
DictItemUtil.AddLog("成功打开" + e.Item.Caption.ToString());
Assembly asm = Assembly.Load("MemberManager");//程序集名
object frmObj = asm.CreateInstance("MemberManager." + e.Item.Tag.ToString());//程序集+form的类名。
Form childForm = (Form)frmObj;
childForm.Tag = e.Item.Tag.ToString(); //tag属性要重新写一次,否则在第二次的时候取不到。原因还不清楚。有知道的望告知。
childForm.MdiParent = this;
childForm.Show();
}
else
MessageUtil.ShowWarning(message);
} }
Devexpress Ribbon 动态生成菜单的更多相关文章
- EasyUI动态生成菜单
业务需求:不同角色有不同的权限,我们根据角色加载页面时展示不同的菜单.在easyUI中,菜单一般采用手风琴accordion组件进行展示,一级菜单下可以加载二级菜单,效果如下: 普通用户看到的菜: 管 ...
- Asp.Net Core MVC在View中,根据用户权限动态生成菜单
1. 用户登录时,将用户的权限写入Cookie: //将需要的信息写入claims后 var identity = new ClaimsIdentity(claims, IdentityConstan ...
- Excel催化剂开源第7波-VSTO开发中Ribbon动态加载菜单
在VS开发环境中,特别是VSTO的开发,微软已经现成地给开发者准备了设计器模式的功能区开发,相对传统的VBA.ExcelDna和其他方式的COM加载项开发来说,不需要手写xml功能区,直接类似拖拉窗体 ...
- 巨蟒django之权限7:动态生成一级&&二级菜单
内容回顾: . 权限的控制 . 表结构设计 存权限的信息 用户表 - name 用户名 - pwd 密码 - roles 多对多 角色表 - name - permissions 多对多 权限表 - ...
- python 全栈开发,Day109(客户管理之动态"二级"菜单)
昨日内容回顾 1. 权限有几张表? 2. 简述权限流程? 3. 为什么要把权限放入session? 4. 静态文件和模块文件 5. 相关技术点 - orm查询 - 去空 - 去重 - 中间件 - in ...
- DevExpress 中根据数据库字典动态生成卡式菜单 z
第三方的Devexpress套件因为要使用权限机制控制不同用户进入系统显示菜单所以要配合字典数据动态生成.在WEB中这种问题灰常的轻松在winform里就稍微有点不同为了用DEV实现卡式菜单有组的概念 ...
- 用C#从数据库动态生成AdminLTE菜单的一种方法
当前的应用设计风格趋于Flat扁平化,很多基于BootStrap实现了很多UI非常漂亮的管理界面(Bootstrap admin template). 此核心文件开源在Github:https://g ...
- PHP+Mysql+easyui点击左侧tree菜单对应表名右侧动态生成datagrid加载表单数据(二)
关于tree菜单生成,参考我的另一篇博文地址tree 菜单 实现功能:点击左侧tree菜单中的table,右侧通过datagrid加载出该表对用的所有数据 难点:获取该表的所有列名,动态生成datag ...
- MVC5+EF6 入门完整教程13 -- 动态生成多级菜单
稍微有一定复杂性的系统,多级菜单都是一个必备组件. 本篇专题讲述如何生成动态多级菜单的通用做法. 我们不用任何第三方的组件,完全自己构建灵活通用的多级菜单. 需要达成的效果:容易复用,可以根据mode ...
随机推荐
- 学习笔记_J2EE_SpringMVC_01_入门
1. 概述 笔者作为一个不太正经的不专业佛教信仰者,习惯了解事物的因果关系,所以概述就有点BBB...了.如果不喜欢这些的,请自行跳过概述章节,直接进入第二章的操作实践:2 入门示例. 1.1. ...
- python绘制等边三角形
定义一个函数,参数为三角形的边长和颜色,并调用该函数绘制两个边长颜色不同的等边三角形 def draw(l,color): import turtle turtle.setup(900,600,200 ...
- 基本urllib库
urlib库 urllib库是Python中一个最基本的网络请求库.可以模拟浏览器的行为,向指定的服务器发送一个请求,并可以保存服务器返回的数据. urlopen函数: 在Python3的urllib ...
- SLAM学习--开源测试数据集合
Tum RGB-D SLAM Dataset and Benchmark https://vision.in.tum.de/data/datasets/rgbd-dataset Kitti http: ...
- python全栈开发day115、116-websocket、websocket原理、websocket加解密、简单问答机器人实现
1.websocket 1.websocket 与轮询 轮询: 不断向服务器发起询问,服务器还不断的回复 浪费带宽,浪费前后端资源 保证数据的实时性 长轮询: 1.客户端向服务器发起消息,服务端轮询, ...
- Shell编程-控制结构 | 基础篇
if-then-else分支结构 if-then-else是一种基于条件测试结果的流程控制结构.如果测试结果为真,则执行控制结构中相应的命令列表:否则将进行另外一个条件测试或者退出该控制结构. if- ...
- (八)shell工具-重点
8.1 cut cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的.cut 命令从文件的每一行剪切字节.字符和字段并将这些字节.字符和字段输出. 1.基本用法 cut [选项参数] fil ...
- php 设计模式(转)
PhpDesignPatterns [PHP 中的设计模式] 一. Introduction[介绍] 设计模式:提供了一种广泛的可重用的方式来解决我们日常编程中常常遇见的问题.设计模式并不一定就是一个 ...
- Unity Shader Learning
Toon 表面没有均匀的阴影. 为了达到这个效果,我们需要一个斜坡图. 其目的是将朗伯光强度NdotL重新映射到另一个值. 使用没有渐变的渐变映射,我们可以强制照明逐步渲染.下图显示了如何使用斜坡图来 ...
- js/jQuery使用过程中常见问题/已踩过的坑大杂烩
目录 一.jQuery选择器选择选中的或者disabled的选择框时attr函数无效 二.jQuery each函数的break/continue 三.jQuery 获取元素的left会值/left数 ...