using DevExpress.XtraBars; using DevExpress.XtraEditors; using Gs.DevApp.Entity; using Gs.DevApp.ToolBox; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Windows.Forms; namespace Gs.DevApp.UserControl { public partial class ToolBarMenu : DevExpress.XtraEditors.XtraUserControl { public bool isSetBtn { get; set; } public List actions { get; } /// /// 新增 /// public event EventHandler btnAddClick; /// /// 删除 /// public event EventHandler btnDelClick; /// /// 修改 /// public event EventHandler btnEdtClick; /// /// 刷新 /// public event EventHandler btnLoadClick; /// /// 保存 /// public event EventHandler btnSaveClick; /// /// 取消 /// public event EventHandler btnEscClick; /// /// 开工 /// public event EventHandler btnKGClick; /// /// 权限 /// public event EventHandler btnRoleClick; /// /// 权限 /// public event EventHandler btnReportClick; /// /// 权限 /// public event EventHandler btnQueryClick; public ToolBarMenu() { InitializeComponent(); this.btnAdd.ItemClick += BtnAdd_ItemClick; this.btnDel.ItemClick += BtnDel_ItemClick; this.btnEdit.ItemClick += BtnEdit_ItemClick; this.btnLoad.ItemClick += BtnLoad_ItemClick; this.btnSave.ItemClick += BtnSave_ItemClick; this.btnKG.ItemClick += BtnKG_ItemClick; this.btnEsc.ItemClick += BtnEsc_ItemClick; this.btnRole.ItemClick += BtnRole_ItemClick; this.btnReport.ItemClick += BtnReport_ItemClick; this.btnQuery.ItemClick += BtnQuery_ItemClick; List lst = new List(); foreach (BarItem item in barManager1.Items) { if (item is BarLargeButtonItem largeButtonItem) { if (!string.IsNullOrEmpty(item.Caption)) lst.Add(item.Caption); } } this.actions = lst; //初始化按钮状态 // initialization(); } private void BtnQuery_ItemClick(object sender, ItemClickEventArgs e) { if (btnQueryClick != null) { btnQueryClick(this, e); } } private void BtnReport_ItemClick(object sender, ItemClickEventArgs e) { if (btnReportClick != null) { btnReportClick(this, e); } } /// /// 初始化按钮状态 /// protected override void OnCreateControl() { base.OnCreateControl(); if (this.Parent != null) { getNamespace(); } } //private void initialization() //{ // List lst = new List(); // //lst.Add(btnAdd.Name); // //lst.Add(btnEdit.Name); // //lst.Add(btnLoad.Name); // //lst.Add(btnDel.Name); // //lst.Add(btnRole.Name); // //lst.Add(btnReport.Name); // //lst.Add(btnQuery.Name); // setBtn(lst); //} private void BtnEsc_ItemClick(object sender, ItemClickEventArgs e) { if (MsgHelper.AskQuestion("确定要要取消吗?")) { List lst = new List(); lst.Add(btnAdd.Name); lst.Add(btnEdit.Name); lst.Add(btnLoad.Name); lst.Add(btnDel.Name); lst.Add(btnRole.Name); _enabledBtn(lst); if (btnEscClick != null) { btnEscClick(this, e); } } } private void BtnKG_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (btnKGClick != null) { btnKGClick(this, e); } } private void BtnSave_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (btnSaveClick != null) { btnSaveClick(this, e); if (isSetBtn == true) { List lst = new List(); lst.Add(btnAdd.Name); lst.Add(btnEdit.Name); lst.Add(btnEsc.Name); _enabledBtn(lst); } } } private void BtnLoad_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (btnLoadClick != null) { //List lst = new List(); //lst.Add(btnRole.Name); //setBtn(lst); btnLoadClick(this, e); } } private void BtnEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { List lst = new List(); lst.Add(btnSave.Name); lst.Add(btnEsc.Name); _enabledBtn(lst); if (btnEdtClick != null) { btnEdtClick(this, e); } } private void BtnDel_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (btnDelClick != null) { btnDelClick(this, e); } } /// /// /// /// /// private void BtnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { List lst = new List(); lst.Add(btnSave.Name); lst.Add(btnEsc.Name); _enabledBtn(lst); if (btnAddClick != null) { btnAddClick(this, e); } } private void BtnRole_ItemClick(object sender, ItemClickEventArgs e) { //List lst = new List(); //lst.Add(btnSave.Name); //lst.Add(btnEsc.Name); //setBtn(lst); if (btnRoleClick != null) { btnRoleClick(this, e); } } private void _enabledBtn(List lstBtn) { foreach (BarItem item in barManager1.Items) { if (item is BarLargeButtonItem largeButtonItem) { if (lstBtn.Contains(item.Name)) largeButtonItem.Enabled = true; else largeButtonItem.Enabled = false; } } } /// /// 根据命名空间和权限,读取该窗体下面的按钮集合 /// private void getNamespace() { string _formNamespace = ""; Control parentControl = this; while (parentControl.Parent != null) { if (parentControl.Parent is Form parentForm) { Type formType = parentForm.GetType(); _formNamespace = formType.FullName; break; } parentControl = parentControl.Parent; } var _obj = new { userGuid = LoginInfoModel.CurrentUser.LoginUserGuid, orgGuid = LoginInfoModel.CurrentUser.LoginOrgGuid, formNamespace = _formNamespace, }; string strReturn = ""; try { strReturn = UtilityHelper.HttpPost("", "MenuAction/GetListByUserOrgSpace", JsonConvert.SerializeObject(_obj)); ReturnModel dd = UtilityHelper.GetNoPageTableByJson(strReturn); DataTable dt = dd.rtnData; List _enabledList = new List(); foreach (BarItem item in barManager1.Items) { ///具有联动关系的按钮(增加), if (item.Caption == "增加") { bool ld1 = dt.AsEnumerable().Any(row => row.Field("name") == "增加" //|| row.Field("name") == "修改" ); if (ld1 == true) { btnEsc.Visibility = btnSave.Visibility = btnLoad.Visibility = BarItemVisibility.Always; btnAdd.Visibility = BarItemVisibility.Always; _enabledList.Add(item.Name); continue; } } ///具有联动关系的按钮(修改), if (item.Caption == "修改") { bool ld1 = dt.AsEnumerable().Any(row => row.Field("name") == "修改" ); if (ld1 == true) { btnEsc.Visibility = btnSave.Visibility = btnLoad.Visibility = BarItemVisibility.Always; btnEdit.Visibility = BarItemVisibility.Always; _enabledList.Add(item.Name); continue; } } ///具有联动关系的按钮(查询), bool ld2 = dt.AsEnumerable().Any(row => row.Field("name") == "查询" ); if (ld2 == true) { if (item.Caption == "刷新") { item.Visibility = BarItemVisibility.Always; //准备启用 _enabledList.Add(item.Name); continue; } } //按钮是否在权限表中 bool exists = dt.AsEnumerable().Any(row => row.Field("name") == item.Caption); if (exists == true) { item.Visibility = BarItemVisibility.Always; //准备启用 string _btnName = _FindBarLargeButtonItemByCaption(item.Caption); if (!string.IsNullOrEmpty(_btnName)) _enabledList.Add(_btnName); } } _enabledBtn(_enabledList); } catch (Exception ex) { ToolBox.MsgHelper.Warning("提示:" + ex.Message); } } private string _FindBarLargeButtonItemByCaption(string caption) { foreach (BarItem item in barManager1.Items) { if (item is BarLargeButtonItem largeButtonItem && largeButtonItem.Caption == caption) { return largeButtonItem.Name; } } return null; } } }