public void BeforeShowDataAssistant(object sender, InvokeDataAssistantHosterEventArgs args) { IInvokeDataAssistantHoster hoster = this.ClientRuleObject as IInvokeDataAssistantHoster; if (hoster != null) { if (tabCtlFilterMain.SelectedTabPage.Equals(tPageAdvanceFilter)) { args.PreFilterParameters = GetAdvanceQueryParameters(); //modify by aifang 2012-07-30 args.PreFilterParameters = _AdvanceFilter.GetQueryParameters(); } else { IPreFilterConditionCtl preFilter = _SimpleFilterControl as IPreFilterConditionCtl; args.PreFilterParameters = preFilter.GetPreQueryParameters(); } //校验当前列的限制列是否已有值 var param = _DataElementCfgs[args.ClumnEditCfgInfo.Name].FilterLimits; if (param != null && param.Count > 0) { foreach (var filter in param) { if (filter.Nullable) { continue; } if (args.PreFilterParameters != null && args.PreFilterParameters.Length > 0) { var limit = args.PreFilterParameters.Where(o => o.PropertyName.Equals(filter.Name)).ToList(); if (limit != null && limit.Count > 0) { continue; } } string description = _Columns[filter.Name].Description; throw new MB.Util.APPException(string.Format("请先选择{0}", description), APPMessageType.DisplayToUser); } } hoster.BeforeShowDataAssistant(sender, args); } }
public void BeforeGetFilterData(object sender, InvokeDataAssistantHosterEventArgs args) { IInvokeDataAssistantHoster hoster = this.ClientRuleObject as IInvokeDataAssistantHoster; if (hoster != null) { if (tabCtlFilterMain.SelectedTabPage.Equals(tPageAdvanceFilter)) { args.PreFilterParameters = GetAdvanceQueryParameters(); //modify by aifang 2012-07-30 args.PreFilterParameters = _AdvanceFilter.GetQueryParameters(); } else { IPreFilterConditionCtl preFilter = _SimpleFilterControl as IPreFilterConditionCtl; args.PreFilterParameters = preFilter.GetPreQueryParameters(); } //校验当前列的限制列是否已有值 var param = _DataElementCfgs[args.ClumnEditCfgInfo.Name].FilterLimits; if (param != null && param.Count > 0) { foreach (var filter in param) { if (!filter.AllowFilterValue) { continue; } if (args.PreFilterParameters != null && args.PreFilterParameters.Length > 0) { var limit = args.PreFilterParameters.Where(o => o.PropertyName.Equals(filter.Name)).ToList(); if (limit != null && limit.Count > 0) { args.FilterParameters.Add(new Util.Model.QueryParameterInfo(filter.SourceName, limit[0].Value, filter.FilterCondition)); } } } } hoster.BeforeGetFilterData(sender, args); } }
/// <summary> /// 根据查询条件获取数据。 /// </summary> /// <param name="dataInDocType"></param> /// <param name="filterParameters"></param> /// <returns></returns> public System.Collections.IList GetFilterObjects(int dataInDocType, List <MB.Util.Model.QueryParameterInfo> filterParameters) { if (_InvokeFilterParentFormHoster != null) { InvokeDataAssistantHosterEventArgs arg = new InvokeDataAssistantHosterEventArgs(_ClientRule, _ClumnEditCfgInfo, _CurrentEditObject, filterParameters); _InvokeFilterParentFormHoster.BeforeGetFilterData(_InvokeParentControl, arg); if (arg.Cancel) { return(null); } } try { if (_QueryObject != null) { return(_QueryObject.GetFilterObjects(filterParameters.ToArray())); } if (_InvokeDataSourceDesc == null) { IList lstDatas = null; try { using (MB.Util.MethodTraceWithTime timeTrack = new MB.Util.MethodTraceWithTime(null)) { lstDatas = _ClientRule.GetObjects((int)_ClientRule.MainDataTypeInDoc, filterParameters.ToArray()); var msg = string.Format("查询花费:{0} 毫秒,返回 {1} 记录", timeTrack.GetExecutedTimes(), lstDatas.Count); MB.WinBase.AppMessenger.DefaultMessenger.Publish(QUERY_REFRESH_MSG_ID, msg); }; } catch (Exception ex) { throw MB.Util.APPExceptionHandlerHelper.PromoteException(ex, " GetObjects 出错!"); } return(lstDatas); } string[] desc = _InvokeDataSourceDesc.Method.Split(','); ArrayList pars = new ArrayList(); if (desc.Length > 1) { string[] ss = desc[1].Split(';'); foreach (var s in ss) { //判断是否为 pars.Add(MB.WinBase.AppEnvironmentSetting.Instance.ConvertSystemParamValue(s)); } } if (filterParameters != null && filterParameters.Count > 0) { pars.Add(filterParameters.ToArray()); } else { if (_InvokeDataSourceDesc.ExistsFilterParams) { //判断调用的方法是否存在过滤的参数,如果存在需要进行特殊的处理(默认情况下存在) List <MB.Util.Model.QueryParameterInfo> filterParam = new List <MB.Util.Model.QueryParameterInfo>(); filterParam.Add(new MB.Util.Model.QueryParameterInfo("1", "1", MB.Util.DataFilterConditions.Special)); pars.Add(filterParam.ToArray()); } } //object val = MB.Util.MyReflection.Instance.InvokeMethod(_ClientRule, desc[0], pars.ToArray()); // object val = MB.Util.MyReflection.Instance.InvokeMethodByName(_ClientRule, desc[0], pars.ToArray()); object val = null; try { using (MB.Util.MethodTraceWithTime timeTrack = new MB.Util.MethodTraceWithTime(null)) { val = MB.Util.MyReflection.Instance.InvokeMethod(_ClientRule, desc[0], pars.ToArray()); var msg = string.Format("查询花费:{0} 毫秒,返回 {1} 记录", timeTrack.GetExecutedTimes(), (val as IList).Count); MB.WinBase.AppMessenger.DefaultMessenger.Publish(QUERY_REFRESH_MSG_ID, msg); }; } catch (Exception ex) { throw MB.Util.APPExceptionHandlerHelper.PromoteException(ex, desc[0] + " 出错!"); } return(val as IList); } catch (Exception ex) { throw MB.Util.APPExceptionHandlerHelper.PromoteException(ex, "调用方法 MB.WinClientDefault.QueryFilter.FrmGetObjectDataAssistant::GetFilterObjects 获取数据有误"); } return(null); }