轉(zhuǎn)帖|使用教程|編輯:龔雪|2017-02-10 15:50:45.000|閱讀 284 次
概述:
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
最近在寫HR系統(tǒng)用到的第三方的Devexpress套件因?yàn)橐褂脵?quán)限機(jī)制控制不同用戶進(jìn)入系統(tǒng)顯示菜單所以要配合字典數(shù)據(jù)動態(tài)生成。
在WEB中這種問題灰常的輕松在winform里就稍微有點(diǎn)不同為了用DEV實(shí)現(xiàn)卡式菜單有組的概念具體如圖紅色部分
提示:這里用了菜單頭、菜單組、菜單項來逐級生成 ,首先是菜單頭便利創(chuàng)建然后判斷是否有菜單組如果有菜單組就先生成菜單組然后把菜單項加入菜單組最后為按鈕注冊事件,這里的事情用一個公用方法搞定即可
/// <summary> /// 動態(tài)加載菜單 /// </summary> private void GetMenuBind() { //根據(jù)登錄用戶角色菜單動態(tài)創(chuàng)建 //循環(huán)創(chuàng)建卡菜單 DataTable baseModuleDT = BLL.BaseModule.GetDataTable("LevelNo=1", ""); for (int i = 0; i < baseModuleDT.Rows.Count; i++) { //創(chuàng)建卡 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 <= 0) { //沒有組 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 = 0; 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('.'));//截取文件名點(diǎn)以前的 ribbonPageGroup.ItemLinks.Add(barButtonItem); barButtonItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.barButtonItem_ItemClick);//注冊事件 } } else { for (int g = 0; g < baseModuleDTG.Rows.Count; g++) { //創(chuàng)建組 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 = 0; 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('.'));//截取文件名點(diǎn)以前的 ribbonPageGroup.ItemLinks.Add(barButtonItem); barButtonItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.barButtonItem_ItemClick);//注冊事件 } } } } }
動態(tài)調(diào)用事件如下:
/// <summary> /// 動態(tài)調(diào)出窗體事件 注:動態(tài)調(diào)用窗體名需和數(shù)據(jù)庫中名稱完全一致 /// </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使用技巧?海量視頻課程以及最專業(yè)的DevExpress培訓(xùn)盡在。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn