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 ...
随机推荐
- AngularJS指令基础(一)
AngularJS指令基础(一) 1.什么是指令:粗暴的理解就是,自定义HTML标签.专业理解是指,angularJS扩展具有自定义功能的HTML元素的途径. 2.什么时候用到指令:需求是变化的.多样 ...
- 小程序:动态监测input和取值
1.输入框失去焦点取值 wxml: <input bindblur="tab" type='text'></input> js: tab:function( ...
- 对于JavaBean+Servlet+SqlServer的代码总结和打包调用
日期:2019.3.24 博客期:049 星期日 说起来我已经说过很多次前台的应用技术了呢!这一次我是要将这一部分打包,做成配套的制作工具: 当前我已经打包成功,想要下载的同学可以进入我的GitHub ...
- Lesson 2-1 (数据结构,序列通用的操作)
2.0 数据结构 --- 数据结构是以某种方式组合起来的数据元素集合. --- python的常见的数据结构 2.1 序列(sequence) --- 序列中的每个元素都有编号,即索引(也称为下标). ...
- ueditor内容带格式回显(html字符串回显)
简单描述:项目里有个地方用到啦ueditor,用来输入XX描述就用电影film代替,保存后,获取到ueditor里的内容(html字符串),保存到数据库. 吐槽:回显的时候,无论怎么处置,就是死活不好 ...
- PHP如何处理emoji表情存入utf8的数据库
一般Mysql表设计时,都是用UTF8字符集的.把带有emoji的昵称字段往里面insert一下就没了,整个字段变成了空字符串.这是怎么回事呢? 原来是因为Mysql的utf8字符集是3字节的,而em ...
- [linux]使用curl进行GET、POST和网页调试
以前在win下开发的时候,习惯用的调试工具是谷歌自带控制台和postman,谷歌控制台比较方便,但不能对请求进行重发,post虽然很好用,但是感觉还是有点'大'.在linux下,其实完全没有那么麻烦, ...
- python全栈开发day115、116-websocket、websocket原理、websocket加解密、简单问答机器人实现
1.websocket 1.websocket 与轮询 轮询: 不断向服务器发起询问,服务器还不断的回复 浪费带宽,浪费前后端资源 保证数据的实时性 长轮询: 1.客户端向服务器发起消息,服务端轮询, ...
- 服务器、IP地址和域名之间有什么关系?
一.服务器 服务器其实就像我们的家用电脑一样,也有主板.CPU.内存.硬盘.电源等,但是由于它们处理问题的不同,服务器更像一台加强的家用电脑,服务器是为展网络业务而存放.处理数据的,所以服务器一般是存 ...
- windows许可证即将过期
win+R 输入 slmgr.vbs -xpr 查看日期 激活工具地址: 链接: https://pan.baidu.com/s/1S5nealQM1bytPYV6CYbgyg 提取码: sbmu 1 ...