try
{
var lisSub = lstMenu.Where(t => t.OwnerID == 0 && t.ProID == Loginer.CurrentUser.ProductID).ToList();
if (lisSub.Count() > 0)
{
foreach (sys_menu item in lisSub)
{
RibbonPage rbplevel_1 = new RibbonPage();
rbplevel_1.Name = item.memuID.ToString();
rbplevel_1.Text = item.memuName;
var groupList = BllMenu.GetListByWhere(t => t.ProID == Loginer.CurrentUser.ProductID && t.IsMenu != 1 && t.OwnerID == item.memuID).ToList();
for (int i = 0; i < groupList.Count; i++)
{
RibbonPageGroup rdpRibbonPageGroup = new RibbonPageGroup();
rdpRibbonPageGroup.Name = "rpgGroup" + groupList[i].memuID.ToString();
rdpRibbonPageGroup.Text = groupList[i].memuName.ToString();
rbplevel_1.Groups.Add(rdpRibbonPageGroup);
}
this.ribbon.Pages.Add(rbplevel_1);
for (int i = 0; i < groupList.Count; i++)
{
CreateSubMenu(rbplevel_1, lstMenu, groupList[i].memuID, i);
}
}
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.Assert(false, ex.Message);
}
void CreateSubMenu(RibbonPage rbpPate, List<sys_menu> lstMenu, int ownerID , int groupIdx)
{
try
{
var lisSub = lstMenu.Where(t => t.OwnerID == ownerID && t.MenuGroupID == ownerID).OrderBy(t => t.MenuOrder).ToList(); //菜单可能 不需要全部初始化,所以需要等级过滤
if (lisSub.Count() > 0)
{
foreach (sys_menu item in lisSub)
{
Assembly a = Assembly.LoadFrom(rbpPate.GetType().Assembly.Location);
if (!item.menuType.IsEmpty())
{
try
{
dynamic rbpButton = Activator.CreateInstance(a.GetExportedTypes().First(t => t.Name == item.menuType));
rbpButton.Caption = item.memuName;
rbpButton.Id = item.memuID;
rbpButton.LargeGlyph = BaseOper.LoadResourcesImage(item.ImageName) != null ? BaseOper.LoadResourcesImage(item.ImageName) : global::Intesim.eManager.Properties.Resources._25;
rbpButton.Name = "rbpButton" + item.memuID.ToString();
rbpButton.Tag = item;
//rbpButton.Links[0].BeginGroup = true; //分隔线
if (lisSub.Count == 1) rbpButton.LargeWidth = 80;
rbpButton.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.ribbon_rbpMenu_ItemClick);
//rbpButton.ItemClick += (s, arg) => { this.ribbon_rbpMenu_ItemClick(rbpButton, null); };//匿名委托传值
rbpPate.Groups[groupIdx].ItemLinks.Add(rbpButton);
CreateSubMenu(rbpPate, lisSub, item.memuID, groupIdx);
}
catch(Exception e)
{
System.Diagnostics.Debug.Assert(false, e.Message);
}
}
}
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.Assert(false, ex.Message);
}
}
private void ribbon_rbpMenu_ItemClick(object sender, ItemClickEventArgs e)
{
//BarButtonItem rButton = sender as BarButtonItem;
sys_menu sm = e.Item.Tag as sys_menu;
if (sm.memuID==0)
{
}
else
{
try //openwindows
{
if (sm!=null && sm.DllName.IsNotEmptyTrim())
{
MdiTools.OpenTopForm(this, sm.DllName, sm.WinName, null);
}
else
{
Msg.ShowError("菜单未配置功能,请与管理员联系!");
}
}
catch (Exception)
{
throw;
}
}
}