/// <summary> /// 双击grid中的信息,打开详细界面 /// </summary> protected virtual void ShowDetailForm() { //如果异步窗口的UIRule不是从AbstractClientRule继承而来的,则不能双击打开 if (!(this._AsynQueryRule is IClientRule)) { return; } MB.Util.Model.ModuleCommandInfo commandInfo = this._AsynQueryRule.ModuleTreeNodeInfo.Commands.Find (o => string.Compare(o.CommandID, MB.BaseFrame.SOD.MODULE_COMMAND_ADD, true) == 0); var cInfo = this._AsynQueryRule.ModuleTreeNodeInfo.Commands.Find (o => string.Compare(o.CommandID, MB.BaseFrame.SOD.MODULE_COMMAND_EDIT, true) == 0); //如果不存在就去新增加的默认配置 if (cInfo != null) { commandInfo = cInfo; } if (commandInfo == null) { MB.WinBase.MessageBoxEx.Show(string.Format("模块{0} 的编辑窗口没有配置!", this._AsynQueryRule.ModuleTreeNodeInfo.Name)); return; } IExtenderEditForm baseEditForm = null; IClientRule clientRule = _AsynQueryRule as IClientRule; if (clientRule == null) { throw new APPException("异步模块如果要打开详细信息,UI Rule必需继承自AbstractClientRule", APPMessageType.DisplayToUser); } try { MB.WinBase.IFace.IForm editForm = MB.WinClientDefault.UICommand.UICreateHelper.Instance.CreateObjectEditForm( commandInfo, ClientRuleObject as IClientRule, ObjectEditType.OpenReadOnly, _BindingSource); Form frm = editForm as Form; baseEditForm = editForm as IExtenderEditForm; if (baseEditForm != null) { baseEditForm.MainBindingGridView = new MB.WinClientDefault.Common.MainViewDataNavigator(gridViewMain); } frm.ShowDialog(); } catch (Exception ex) { throw ex; } finally { if (baseEditForm != null) { baseEditForm.DisposeBindingEvent(); } } }
/// <summary> /// 构造批量新增 /// </summary> /// <param name="editForm">当前编辑的form实例</param> /// <param name="editCols">当前的编辑列的配置信息</param> /// <param name="detailEntitys">当前明细的绑定</param> /// <param name="dataInDocType">当前明细所对应的DocType值</param> public UIGridCtlBatchAddHelper(MB.WinBase.IFace.IForm editForm, Dictionary <string, ColumnEditCfgInfo> editCols, BindingList <T> detailEntitys, int dataInDocType) { _EditForm = editForm; _EditCols = editCols; _DetailEntitys = detailEntitys; _dataInDocType = dataInDocType; _IsEntityBatchCreatedFromServer = false; }
/// <summary> /// 根据指定的参数创建对象编辑窗口。 /// </summary> /// <param name="commandInfo"></param> /// <param name="clientRuleObject"></param> /// <param name="editType"></param> /// <param name="bindingSource"></param> /// <returns></returns> public MB.WinBase.IFace.IForm CreateObjectEditForm(MB.Util.Model.ModuleCommandInfo commandInfo, IClientRule clientRuleObject, ObjectEditType editType, BindingSourceEx bindingSource) { string[] formSetting = commandInfo.UIView.Split(','); object[] formCreatePars = new object[] { clientRuleObject, editType, bindingSource }; MB.WinBase.IFace.IForm winForm = MB.Util.DllFactory.Instance.LoadObject(formSetting[0], formCreatePars, formSetting[1]) as MB.WinBase.IFace.IForm; MB.Util.TraceEx.WriteIf(winForm != null, string.Format("请检查数据库中该功能模块对应的显示窗口{0},是否设置出错!", commandInfo.UIView), MB.Util.APPMessageType.SysErrInfo); return(winForm); }
/// <summary> /// 创建普通的显示窗口。 /// </summary> /// <param name="commandInfo"></param> /// <returns></returns> public MB.WinBase.IFace.IForm CreateGeneralForm(MB.Util.Model.ModuleCommandInfo commandInfo) { string[] formSetting = commandInfo.UIView.Split(','); object[] formCreatePars = null; Form winForm = MB.Util.DllFactory.Instance.LoadObject(formSetting[0], formCreatePars, formSetting[1]) as Form; MB.Util.TraceEx.WriteIf(winForm != null, string.Format("请检查数据库中该功能模块对应的显示窗口{0},是否设置出错!", commandInfo.UIView), MB.Util.APPMessageType.SysErrInfo); MB.WinBase.IFace.IForm frm = winForm as MB.WinBase.IFace.IForm; if (frm == null) { throw new MB.Util.APPException("所有弹出窗口必须实现 MB.WinBase.IFace.IForm 接口!", MB.Util.APPMessageType.SysFileInfo); } return(frm); }
public ChartTemplateMenu(DevExpress.XtraGrid.GridControl xtraGrid) { _XtraGrid = xtraGrid; _TemplateMenu = new System.Windows.Forms.ContextMenu(); if (xtraGrid.Parent != null) { _ContainerForm = MB.WinBase.ShareLib.Instance.GetControlParentForm(xtraGrid) as MB.WinBase.IFace.IForm; } _TemplateHelper = new ChartTemplateHelper(); _TemplateClient = _TemplateHelper.CreateTemplateClient(); var list = getTemplateList(xtraGrid); CreateMenuItems(list); }
/// <summary> /// 根据指定的模块命令参数 创建Win Form 窗口。 /// </summary> /// <param name="clientRule">指定的客户端业务类,可以为空。</param> /// <param name="commandInfo">模块命令参数</param> /// <returns></returns> public MB.WinBase.IFace.IForm CreateWinForm(MB.WinBase.IFace.IClientRuleQueryBase clientRule, MB.Util.Model.ModuleCommandInfo commandInfo) { try { string[] clientRuleSetting = null; if (!string.IsNullOrEmpty(commandInfo.ClientRule)) { clientRuleSetting = commandInfo.ClientRule.Split(','); } string[] formSetting = commandInfo.UIView.Split(','); object[] ruleCreatePars = null; object[] formCreatePars = null; if (!string.IsNullOrEmpty(commandInfo.RuleCreateParams)) { ruleCreatePars = commandInfo.RuleCreateParams.Split(','); } if (!string.IsNullOrEmpty(commandInfo.UICreateParams)) { formCreatePars = commandInfo.UICreateParams.Split(','); } MB.WinBase.IFace.IClientRuleQueryBase rule = clientRule; if (!string.IsNullOrEmpty(commandInfo.ClientRule)) { if (clientRule == null || string.Compare(clientRuleSetting[0], clientRule.GetType().FullName, true) != 0) { var temp = MB.Util.DllFactory.Instance.LoadObject(clientRuleSetting[0], ruleCreatePars, clientRuleSetting[1]); rule = temp as MB.WinBase.IFace.IClientRuleQueryBase; } MB.Util.TraceEx.WriteIf(rule != null, string.Format("请检查数据库中该功能模块对应的客户端类{0} 是否设置出错!", commandInfo.ClientRule), MB.Util.APPMessageType.SysErrInfo); } MB.WinBase.IFace.IForm winForm = MB.Util.DllFactory.Instance.LoadObject(formSetting[0], formCreatePars, formSetting[1]) as MB.WinBase.IFace.IForm; MB.Util.TraceEx.WriteIf(winForm != null, string.Format("请检查数据库中该功能模块对应的显示窗口{0},是否设置出错!", commandInfo.UIView), MB.Util.APPMessageType.SysErrInfo); winForm.ClientRuleObject = rule; return(winForm); } catch (MB.Util.APPException aex) { throw aex; } catch (Exception ex) { throw MB.Util.APPExceptionHandlerHelper.PromoteException(ex, MB.Util.APPMessageType.SysErrInfo); } }
/// <summary> /// 操作当用户点击XtraGrid ContextMenu 时处理的事项。 /// </summary> /// <param name="containerForm"></param> /// <param name="xtraGrid"></param> /// <param name="menuType"></param> public void HandleClickXtraContextMenu(MB.WinBase.IFace.IForm containerForm, DevExpress.XtraGrid.GridControl xtraGrid, XtraContextMenuType menuType) { //if(containerForm==null) // return; switch (menuType) { case XtraContextMenuType.Add: case XtraContextMenuType.Print: case XtraContextMenuType.Aggregation: MB.WinBase.MessageBoxEx.Show("目前暂时先不提供右键操作的功能,请直接从工具栏上进行选择"); break; case XtraContextMenuType.Delete: //每个网格的数据 删除涉及到具体的操作,需要手工进行处理。 // MB.XWinLib.XtraGrid.XtraGridEditHelper.Instance.DeleteFocusedRow(xtraGrid); break; case XtraContextMenuType.Export: ExportToExcelAndShow(xtraGrid); break; case XtraContextMenuType.Copy: dataCopy(xtraGrid.DefaultView as DevExpress.XtraGrid.Views.Grid.GridView); break; case XtraContextMenuType.SaveGridState: showFrmGridLayoutManager(xtraGrid); break; case XtraContextMenuType.ViewControl: case XtraContextMenuType.ExportAsTemplet: case XtraContextMenuType.Past: case XtraContextMenuType.DataImport: case XtraContextMenuType.ExcelEdit: default: MB.WinBase.MessageBoxEx.Show("该菜单项对于当前对象操作无效,有可能是该对象不能进行该菜单项操作或者开发人员还没有实现该菜单项"); break; } }
//add by aifang 2012-5-16 public static string GetXtraGridLayoutSectionName(DevExpress.XtraGrid.GridControl xtraGrid) { DevExpress.XtraGrid.Views.Grid.GridView gridView = xtraGrid.MainView as DevExpress.XtraGrid.Views.Grid.GridView; if (gridView == null) { return(string.Empty); } string sectionName = string.Empty; MB.XWinLib.XtraGrid.GridControlEx ctlEx = xtraGrid as MB.XWinLib.XtraGrid.GridControlEx; if (ctlEx != null && ctlEx.InstanceIdentity != Guid.Empty) { sectionName = ctlEx.InstanceIdentity.ToString(); } else { System.Windows.Forms.Form frm = MB.WinBase.ShareLib.Instance.GetControlParentForm(xtraGrid); if (frm == null) { return(string.Empty); } else { sectionName = frm.GetType().FullName + " " + xtraGrid.Name; MB.WinBase.IFace.IForm busFrm = frm as MB.WinBase.IFace.IForm; if (busFrm != null && busFrm.ClientRuleObject != null) { sectionName = frm.GetType().FullName + " " + busFrm.ClientRuleObject.GetType().FullName + " " + busFrm.ClientRuleObject.ClientLayoutAttribute.UIXmlConfigFile + " " + xtraGrid.Name; } } } return(sectionName); }
private static IClientRuleQueryBase getXtraGridClientRule(DevExpress.XtraGrid.GridControl xtraGrid) { try { System.Windows.Forms.Form frm = MB.WinBase.ShareLib.Instance.GetControlParentForm(xtraGrid); if (frm == null) { return(null); } else { MB.WinBase.IFace.IForm busFrm = frm as MB.WinBase.IFace.IForm; if (busFrm != null && busFrm.ClientRuleObject != null) { return(busFrm.ClientRuleObject); } } } catch (Exception ex) { MB.Util.TraceEx.Write(string.Format("获取XtraGrid对应的业务类失败,错误信息为:{0}", ex.Message)); } return(null); }
//打开焦点模块 protected void OpenModuleByTreeNode(DevExpress.XtraTreeList.Nodes.TreeListNode treeNode, ModuleOpenState openState) { try { using (MB.WinBase.WaitCursor cursor = new MB.WinBase.WaitCursor(this)) { ModuleTreeNodeInfo nodeInfo = GetFocusedNodeInfo(treeNode); OnBeforeDoubleClickTreeNode(new MdiMainFunctionTreeEventArgs(null, nodeInfo)); if (nodeInfo == null || nodeInfo.Commands == null || nodeInfo.Commands.Count == 0) { return; } //判断是否已经打开 foreach (Form f in this.MdiChildren) { MB.WinBase.IFace.IForm iView = f as MB.WinBase.IFace.IForm; if (iView == null) { continue; } if (iView.ClientRuleObject.ModuleTreeNodeInfo.ID == nodeInfo.ID) { (iView as Form).BringToFront(); return; } } UICreateHelper.Instance.ShowViewGridForm(this, nodeInfo, openState); recordUserActivity(nodeInfo); } } catch (Exception ex) { MB.WinBase.ApplicationExceptionTerminate.DefaultInstance.ExceptionTerminate(ex); } }
//根据当前活动的子窗口 格式化操作的菜单项 private void refreshToolsButtonItem(MB.Util.Model.ModuleTreeNodeInfo moduleInfo) { using (MB.Util.MethodTraceWithTime track = new Util.MethodTraceWithTime("XtraRibbonMdiMainForm::refreshToolsButtonItem")) { _RejectCommandItems.Clear(); foreach (DevExpress.XtraBars.BarButtonItem butItem in _AllCreateMenuItems.Keys) { butItem.Enabled = true; } //2009-21-29主要从兼容的角度来处理,以后需要去掉 (新订货会系统中有需要) if (!string.IsNullOrEmpty(moduleInfo.RejectCommands)) { string[] rejects = moduleInfo.RejectCommands.Split(','); foreach (DevExpress.XtraBars.BarButtonItem butItem in _AllCreateMenuItems.Keys) { System.ComponentModel.Design.CommandID cmdID = _AllCreateMenuItems[butItem]; UICommandType cType = (UICommandType)cmdID.ID; if (Array.IndexOf(rejects, cType.ToString()) >= 0) { butItem.Enabled = false; if (!_RejectCommandItems.ContainsKey(butItem)) { _RejectCommandItems.Add(butItem, false); } else { _RejectCommandItems[butItem] = false; } } } } MB.WinBase.IFace.IForm activeForm = this.GetActiveMdiChildForm(); if (activeForm == null || activeForm.ClientRuleObject == null) { foreach (DevExpress.XtraBars.BarButtonItem butItem in _AllCreateMenuItems.Keys) { butItem.Enabled = false; } return; } //根据业务类上的配置项来进行约束操作菜单项。 var rejectCfg = MB.WinBase.Atts.AttributeConfigHelper.Instance.GetModuleRejectCommands(activeForm.ClientRuleObject.GetType()); if (rejectCfg != null) { foreach (DevExpress.XtraBars.BarButtonItem butItem in _AllCreateMenuItems.Keys) { System.ComponentModel.Design.CommandID cmdID = _AllCreateMenuItems[butItem]; UICommandType cType = (UICommandType)cmdID.ID; if ((rejectCfg.RejectCommands & cType) != 0) { butItem.Enabled = false; if (!_RejectCommandItems.ContainsKey(butItem)) { _RejectCommandItems.Add(butItem, false); } else { _RejectCommandItems[butItem] = false; } } } } //如果是分析界面的话要屏蔽掉操作功能菜单项。 MB.WinBase.IFace.IClientRule editRule = activeForm.ClientRuleObject as MB.WinBase.IFace.IClientRule; if (editRule != null) { return; } foreach (DevExpress.XtraBars.BarButtonItem butItem in _AllCreateMenuItems.Keys) { System.ComponentModel.Design.CommandID cmdID = _AllCreateMenuItems[butItem]; var info = CommandGroups.EditCommands.FirstOrDefault(o => o.CommandID.Equals(cmdID)); if (info != null) { butItem.Enabled = false; if (!_RejectCommandItems.ContainsKey(butItem)) { _RejectCommandItems.Add(butItem, false); } else { _RejectCommandItems[butItem] = false; } continue; } if (cmdID.Equals(UICommands.DataImport)) { butItem.Enabled = false; if (!_RejectCommandItems.ContainsKey(butItem)) { _RejectCommandItems.Add(butItem, false); } else { _RejectCommandItems[butItem] = false; } continue; } } } }
/// <summary> /// 验证当前活动的编辑窗口。 /// </summary> /// <param name="activeEditForm"></param> public virtual void ValidatedEditForm(MB.WinBase.IFace.IForm activeEditForm) { }
/// <summary> /// 验证对象网格浏览列表中的列信息。 /// </summary> /// <param name="activeForm"></param> public virtual void ValidatedColumns(MB.WinBase.IFace.IForm activeForm) { }
//显示对象窗口 protected virtual void ShowObjectEditForm(ObjectEditType editType) { if (editType != ObjectEditType.AddNew && _BindingSource.Current == null) { return; } MB.Util.Model.ModuleCommandInfo commandInfo = this._ClientRuleObject.ModuleTreeNodeInfo.Commands.Find (o => string.Compare(o.CommandID, MB.BaseFrame.SOD.MODULE_COMMAND_ADD, true) == 0); if (editType == ObjectEditType.OpenEdit) { var cInfo = this._ClientRuleObject.ModuleTreeNodeInfo.Commands.Find (o => string.Compare(o.CommandID, MB.BaseFrame.SOD.MODULE_COMMAND_EDIT, true) == 0); //如果不存在就去新增加的默认配置 if (cInfo != null) { commandInfo = cInfo; } } if (commandInfo == null) { MB.WinBase.MessageBoxEx.Show(string.Format("模块{0} 的编辑窗口没有配置!", this._ClientRuleObject.ModuleTreeNodeInfo.Name)); return; } if (_BindingSource == null) { throw new MB.Util.APPException(" 目前框架只支持绑定到数据实体的集合,对于DataSet 目前不支持显示对象窗口的编辑。", MB.Util.APPMessageType.SysFileInfo); } // IExtenderEditForm baseEditForm = null; try { MB.WinBase.IFace.IForm editForm = MB.WinClientDefault.UICommand.UICreateHelper.Instance.CreateObjectEditForm( commandInfo, ClientRuleObject as IClientRule, editType, _BindingSource); if (editForm == null) { throw new MB.Util.APPException(" 以DefaultViewForm 做为浏览窗口的编辑窗口必须 实现 MB.WinBase.IFace.IForm "); } Form frm = editForm as Form; baseEditForm = editForm as IExtenderEditForm; if (baseEditForm != null) { baseEditForm.MainBindingGridView = this.GetViewDataNavigator(); } frm.ShowDialog(); //如果动态列,则关闭编辑页面以后自动刷新查询窗口 //if (_ClientRuleObject.ClientLayoutAttribute.LoadType == ClientDataLoadType.ReLoad) // Refresh(); } catch (Exception ex) { throw ex; } finally { if (baseEditForm != null) { baseEditForm.DisposeBindingEvent(); } } }