/// <summary> /// 设置数据浏览 /// </summary> /// <param name="clientRule"></param> /// <param name="dataSource"></param> public void SetDataSource(MB.WinBase.IFace.IClientRuleQueryBase clientRule, object dataSource) { //在数据小助手中实现动态列的设置,原来是取Default, clientRule.UIRuleXmlConfigInfo.GetDefaultColumns() Dictionary <string, ColumnPropertyInfo> bindingPropertys = MB.XWinLib.XtraGrid.XtraGridDynamicHelper.Instance.GetDynamicColumns(clientRule); MB.XWinLib.XtraGrid.XtraGridHelper.Instance.BindingToXtraGrid(grdCtlMain, dataSource, bindingPropertys, clientRule.UIRuleXmlConfigInfo.ColumnsCfgEdit, clientRule.ClientLayoutAttribute.UIXmlConfigFile, true); // gridViewMain.OptionsSelection.MultiSelect = _MultiSelect; if (_MultiSelect) { MB.XWinLib.XtraGrid.XtraGridEditHelper.Instance.AppendEditSelectedColumn(grdCtlMain); } //绑定右键菜单项 add by aifang 2012-08-22 begin if (!_ColumnEditCfgInfo.HideContextMenu) { Menu.MyContextMenuStrip strip = null; if (_ColumnEditCfgInfo.DataAssistantContextMenu == null || string.IsNullOrEmpty(_ColumnEditCfgInfo.DataAssistantContextMenu.Type)) { strip = new Menu.MyContextMenuStrip(); strip.ColumnEditCfgInfo = _ColumnEditCfgInfo; strip.ParentControl = this.grdCtlMain; this.grdCtlMain.ContextMenuStrip = strip; } else { string type = _ColumnEditCfgInfo.DataAssistantContextMenu.Type; string[] typePars = type.Split(','); string param = _ColumnEditCfgInfo.DataAssistantContextMenu.TypeConstructParams; string[] conPars = string.IsNullOrEmpty(param) ? null : param.Split(','); object obj = MB.Util.DllFactory.Instance.LoadObject(typePars[0], conPars, typePars[1]); if ((obj as Menu.MyContextMenuStrip) == null) { throw new MB.Util.APPException(" ClickButtonInput 弹出的自定义菜单必须继承自 MB.WinClientDefault.Menu.MyContextMenuStrip 控件", Util.APPMessageType.DisplayToUser); } strip = obj as Menu.MyContextMenuStrip; strip.ColumnEditCfgInfo = _ColumnEditCfgInfo; strip.ParentControl = this.grdCtlMain; //为自定义的ContextMenuStrip添加复制单元格的命令 ToolStripMenuItem itemCopyCell = new ToolStripMenuItem(); itemCopyCell.Name = "tsmiCopyCell"; itemCopyCell.Text = "复制单元格"; strip.Items.Add(itemCopyCell); this.grdCtlMain.ContextMenuStrip = strip; } } //绑定右键菜单项 add by aifang 2012-08-22 end }
/// <summary> /// 构造函数... /// </summary> public FrmGetObjectDataAssistant(MB.WinBase.IFace.IClientRule clientRule) { InitializeComponent(); _ToolTip = new ToolTip(); panMain.Dock = DockStyle.Fill; _ClientRule = clientRule; lnkChecked.Visible = false; this.Load += new EventHandler(FrmGetObjectDataAssistant_Load); }
private bool createFilterObject() { System.Windows.Forms.Control parentHoster = MB.WinBase.ShareLib.Instance.GetInvokeDataHosterControl(this.Parent); if (parentHoster != null) { // System.Windows.Forms.Form parentForm = MB.WinBase.ShareLib.Instance.GetControlParentForm(this.Parent); _FrmDataAssistant = MB.WinBase.ObjectDataFilterAssistantHelper.Instance.CreateDataAssistantObject(this, _ColumnEditCfgInfo, parentHoster, ref _ClientQueryRule); } else { Control ctl = this.Parent; DevExpress.XtraGrid.GridControl grdCtl = ctl as DevExpress.XtraGrid.GridControl; object mainEntity = null; if (grdCtl != null) { DevExpress.XtraGrid.Views.Grid.GridView gridView = grdCtl.DefaultView as DevExpress.XtraGrid.Views.Grid.GridView; mainEntity = gridView.GetRow(gridView.FocusedRowHandle); if (mainEntity == null) { IBindingList bindingList = grdCtl.DataSource as IBindingList; mainEntity = bindingList.AddNew(); _AddedMainEntity = mainEntity; } //if (gridView.FocusedRowHandle < 0) //{ // //通过这种变态的方法自动增加一个空行,同时保证不重复增加 // this.Text = "0"; // this.Text = string.Empty; //} //mainEntity = gridView.GetFocusedRow(); } parentHoster = MB.WinBase.ShareLib.Instance.GetControlParentForm(this.Parent); IForm frm = parentHoster as IForm; if (frm != null) { _ClientQueryRule = frm.ClientRuleObject; _FrmDataAssistant = MB.WinBase.ObjectDataFilterAssistantHelper.Instance.CreateDataAssistantObject(this, mainEntity, _ColumnEditCfgInfo, _ClientQueryRule); } } if (_FrmDataAssistant != null) { _FrmDataAssistant.MultiSelect = false; _FrmDataAssistant.MaxSelectRows = _ColumnEditCfgInfo.MaxSelectRows; _FrmDataAssistant.AfterGetObjectData += new MB.WinBase.IFace.GetObjectDataAssistantEventHandle(assistant_AfterGetObjectData); } return(_FrmDataAssistant != null); }
/// <summary> /// 构造函数... /// </summary> public ucFilterCondition(MB.WinBase.IFace.IViewGridForm viewGridForm, MB.WinBase.IFace.IClientRuleQueryBase clientRule, string filterCfgName) { InitializeComponent(); _ViewGridForm = viewGridForm; _ClientRule = clientRule; if (!string.IsNullOrEmpty(filterCfgName)) { _FilterCfgName = filterCfgName; } else { _FilterCfgName = DATA_FILTER_MAIN_CFG_NAME; } this.Load += new EventHandler(ucFilterCondition_Load); _ErrorProvider = new ErrorProvider(); _ErrorProvider.ContainerControl = this; }
/// <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> /// 创建数据获取帮助窗口。 /// </summary> /// <param name="cfgInfo"></param> /// <param name="parentForm"></param> /// <param name="clientQueryRule"></param> /// <returns></returns> public MB.WinBase.IFace.IDataAssistant CreateDataAssistantObject(object srcControl, ColumnEditCfgInfo cfgInfo, System.Windows.Forms.Control parentHoster, ref MB.WinBase.IFace.IClientRuleQueryBase clientQueryRule) { MB.WinBase.Common.ColumnEditCfgInfo columnEditCfgInfo = cfgInfo; if (columnEditCfgInfo == null) { throw new MB.Util.APPException("需要进行查询的对象ColumnEditCfg 没有进行进行相应的配置。", MB.Util.APPMessageType.DisplayToUser); } if (cfgInfo.CreateDataAssistant != null) { return(cfgInfo.CreateDataAssistant(srcControl)); } //判断是否存在自定义弹出窗口的配置,如果存在就进行处理 else if (columnEditCfgInfo.ClickButtonShowForm != null && !string.IsNullOrEmpty(columnEditCfgInfo.ClickButtonShowForm.Type)) { //edit by aifang 2012-4-19 MB.WinBase.IFace.IInvokeDataAssistantHoster hoster = parentHoster as MB.WinBase.IFace.IInvokeDataAssistantHoster; if (hoster != null) { MB.WinBase.IFace.InvokeDataAssistantHosterEventArgs arg = new MB.WinBase.IFace.InvokeDataAssistantHosterEventArgs(columnEditCfgInfo); arg.ClientRule = clientQueryRule; hoster.BeforeShowDataAssistant(srcControl, arg); if (arg.Cancel) { return(null); } clientQueryRule = arg.ClientRule; columnEditCfgInfo = arg.ClumnEditCfgInfo; } //end string[] pars = null; if (!string.IsNullOrEmpty(columnEditCfgInfo.ClickButtonShowForm.TypeConstructParams)) { pars = columnEditCfgInfo.ClickButtonShowForm.TypeConstructParams.Split(','); } string[] frmSetting = columnEditCfgInfo.ClickButtonShowForm.Type.Split(','); object frm = MB.Util.DllFactory.Instance.LoadObject(frmSetting[0], pars, frmSetting[1]); if ((frm as Form) == null) { throw new MB.Util.APPException(" ColumnEditCfgInfo 的 ClickButtonShowForm 配置不是有效的一个窗口类", MB.Util.APPMessageType.SysErrInfo); } if ((frm as MB.WinBase.IFace.IDataAssistant) == null) { throw new MB.Util.APPException(" ClickButtonInput 弹出的自定义窗口必须实现 MB.WinBase.IFace.IDataAssistant 接口", MB.Util.APPMessageType.SysErrInfo); } return(frm as MB.WinBase.IFace.IDataAssistant); } else { if (columnEditCfgInfo.InvokeDataSourceDesc == null) { throw new MB.Util.APPException(" ColumnEditCfg 配置项的InvokeDataSourceDesc 没有进行进行相应的配置。", MB.Util.APPMessageType.SysErrInfo); } string[] descs = columnEditCfgInfo.InvokeDataSourceDesc.Type.Split(','); string[] conPars = null; if (!string.IsNullOrEmpty(cfgInfo.InvokeDataSourceDesc.TypeConstructParams)) { conPars = cfgInfo.InvokeDataSourceDesc.TypeConstructParams.Split(','); } if (clientQueryRule == null) { clientQueryRule = MB.Util.DllFactory.Instance.LoadObject(descs[0], conPars, descs[1]) as MB.WinBase.IFace.IClientRuleQueryBase; } MB.Util.TraceEx.Assert(clientQueryRule != null, "调用UI层业务控制类配置有误!"); //edit by chendc 2010-09-03 MB.WinBase.IFace.IInvokeDataAssistantHoster hoster = parentHoster as MB.WinBase.IFace.IInvokeDataAssistantHoster; if (hoster != null) { MB.WinBase.IFace.InvokeDataAssistantHosterEventArgs arg = new MB.WinBase.IFace.InvokeDataAssistantHosterEventArgs(columnEditCfgInfo); arg.ClientRule = clientQueryRule; hoster.BeforeShowDataAssistant(srcControl, arg); if (arg.Cancel) { return(null); } clientQueryRule = arg.ClientRule; } string defaultQueryFilterForm = "MB.WinClientDefault.QueryFilter.FrmGetObjectDataAssistant,MB.WinClientDefault.Dll"; string[] formSetting = defaultQueryFilterForm.Split(','); MB.WinBase.IFace.IGetObjectDataAssistant dataAssistant = MB.Util.DllFactory.Instance.LoadObject(formSetting[0], formSetting[1]) as MB.WinBase.IFace.IGetObjectDataAssistant; MB.Util.TraceEx.Assert(dataAssistant != null, "帮助查找窗口必须实现接口MB.WinBase.IFace.IGetObjectDataAssistant!"); resetDataAssistant(clientQueryRule, columnEditCfgInfo, null, hoster, dataAssistant); return(dataAssistant); } }
/// <summary> /// 创建数据获取帮助窗口。 /// </summary> /// <param name="cfgInfo"></param> /// <param name="parentForm"></param> /// <returns></returns> public MB.WinBase.IFace.IDataAssistant CreateDataAssistantObject(object srcControl, ColumnEditCfgInfo cfgInfo, System.Windows.Forms.Control parentHoster) { MB.WinBase.IFace.IClientRuleQueryBase clientQueryRule = null; return(CreateDataAssistantObject(srcControl, cfgInfo, parentHoster, ref clientQueryRule)); }
public ucFilterCondition(MB.WinBase.IFace.IClientRuleQueryBase clientRule, string filterCfgName) : this(null, clientRule, filterCfgName) { }
void FrmGetObjectDataAssistant_Load(object sender, EventArgs e) { if (MB.Util.General.IsInDesignMode()) { return; } if (_ClientRule == null) { string[] tps = this.InvokeDataSourceDesc.Type.Split(','); if (string.IsNullOrEmpty(this.InvokeDataSourceDesc.TypeConstructParams)) { _ClientRule = MB.Util.DllFactory.Instance.LoadObject(tps[0], tps[1]) as MB.WinBase.IFace.IClientRuleQueryBase; } else { var conPars = this.InvokeDataSourceDesc.TypeConstructParams.Split(','); _ClientRule = MB.Util.DllFactory.Instance.LoadObject(tps[0], conPars, tps[1]) as MB.WinBase.IFace.IClientRuleQueryBase; } } if (_ClientRule == null) { throw new MB.Util.APPException("没有得到客户端业务控制类!", MB.Util.APPMessageType.SysErrInfo); } //增加分页 add by aifang 2012-07-26 begin MB.WinBase.AppMessenger.DefaultMessenger.Subscribe <string>(QUERY_REFRESH_MSG_ID, o => { labTitleMsg.Text = o; }); if (_QueryObject == null && pnlQry.Visible) { lnkNextPage.Click += new EventHandler(lnkNextPage_Click); lnkPreviousPage.Click += new EventHandler(lnkPreviousPage_Click); lnkPreviousPage.Enabled = false; lnkNextPage.Enabled = false; } //增加分页 add by aifang 2012-07-26 end if (_StepShowControlPane == null) { _StepShowControlPane = new Dictionary <PaneViewType, Control>(); _StepShowControlPane.Add(PaneViewType.FilterPane, CreateFilterControl(_ClientRule, ClumnEditCfgInfo.FilterCfgName)); ITreeListViewHoster treeViewRule = _ClientRule as ITreeListViewHoster; if (treeViewRule == null) { _ListView = new ucDataCheckListView(); } else { _ListView = new ucDataTreeListView(); } _ListView.AfterSelectData += new GetObjectDataAssistantEventHandle(listView_AfterSelectData); _StepShowControlPane.Add(PaneViewType.DataSelect, _ListView as Control); foreach (Control ctl in _StepShowControlPane.Values) { ctl.Dock = DockStyle.Fill; panMain.Controls.Add(ctl); } } if (_HideFilterPane) { _StepShowControlPane[PaneViewType.DataSelect].BringToFront(); _ListView.MultiSelect = _MultiSelect; _ListView.ColumnEditCfgInfo = _ClumnEditCfgInfo; lnkChecked.Visible = _MultiSelect; try { //获得动态列的MessageKey string messageHeaderKey = string.Empty; if (_ClientRule.ClientLayoutAttribute.LoadType == ClientDataLoadType.ReLoad) { messageHeaderKey = _ClientRule.ClientLayoutAttribute.MessageHeaderKey; } //添加动态列消息头 MB.XWinLib.XtraGrid.XtraGridDynamicHelper.Instance.AppendQueryBehaviorColumns(_ClientRule); //增加分页信息 if (_MAX_SHOW_ROWS <= 0) { _MAX_SHOW_ROWS = MB.Util.MyConvert.Instance.ToInt(nubMaxShotCount.Value); } _ClientRule.CurrentQueryBehavior.PageSize = _MAX_SHOW_ROWS; _ClientRule.CurrentQueryBehavior.PageIndex = 0; using (QueryBehaviorScope scope = new QueryBehaviorScope(_ClientRule.CurrentQueryBehavior, messageHeaderKey)) { List <MB.Util.Model.QueryParameterInfo> filterParas; if (_FilterParametersIfNoFiterPanel != null) { filterParas = _FilterParametersIfNoFiterPanel; } else { filterParas = new List <MB.Util.Model.QueryParameterInfo>(); } var lstDatas = this.GetFilterObjects(0, filterParas); _ListView.SetDataSource(_ClientRule, lstDatas); validateButton(PaneViewType.DataSelect); butNext.Enabled = false; butPreviouss.Enabled = false; validatedPageControl((lstDatas as IList).Count); } } catch (Exception ex) { MB.WinBase.ApplicationExceptionTerminate.DefaultInstance.ExceptionTerminate(ex); } } else { _StepShowControlPane[PaneViewType.FilterPane].BringToFront(); validateButton(PaneViewType.FilterPane); } ucFilterCondition filterCtl = _StepShowControlPane[PaneViewType.FilterPane] as ucFilterCondition; if (filterCtl != null) { //panBottom.BackColor = filterCtl.AllowEmptyFilter ? System.Drawing.Color.FromArgb(212, 228, 248) : Color.White; if (filterCtl.AllowEmptyFilter) { _ToolTip.SetToolTip(panBottom, "查询绿色通道,允许查询所有数据"); } } }