private void executeQuery() { try { MB.Util.Model.QueryParameterInfo[] queryParamters = null; if (tabCtlFilterMain.SelectedTabPage.Equals(tPageAdvanceFilter)) { queryParamters = GetAdvanceQueryParameters();//modify by aifang 2012-07-30 queryParamters = _AdvanceFilter.GetQueryParameters(); } else { queryParamters = _FilterConditionCtl.GetQueryParameters(); // _SimpleFilterEdit.GetQueryParameters(); } if (queryParamters == null || queryParamters.Length == 0) { if (!_FilterConditionCtl.AllowEmptyFilter) { MB.WinBase.MessageBoxEx.Show("请至少输入一个数据过滤的条件!"); return; } else { MB.Util.Model.QueryParameterInfo allFilter = new MB.Util.Model.QueryParameterInfo("0", "0", MB.Util.DataFilterConditions.Special); queryParamters = new MB.Util.Model.QueryParameterInfo[] { allFilter }; } } _ViewGridForm.ClientRuleObject.CurrentQueryBehavior.PageSize = MyConvert.Instance.ToInt(nubMaxShotCount.Value); _ViewGridForm.ClientRuleObject.CurrentQueryBehavior.IsTotalPageDisplayed = this.cbShowTotalPage.Checked; OnAfterGetObjectData(new QueryFilterInputEventArgs(queryParamters)); this.Close(); } catch (Exception ex) { MB.WinBase.ApplicationExceptionTerminate.DefaultInstance.ExceptionTerminate(ex); } }
/// <summary> /// 根据输入的条件获取查询的参数。 /// </summary> /// <returns></returns> public MB.Util.Model.QueryParameterInfo[] GetQueryParameters() { List <MB.Util.Model.QueryParameterInfo> parameters = new List <MB.Util.Model.QueryParameterInfo>(); bool validated = true; foreach (MB.WinBase.Binding.ColumnBindingInfo bindingInfo in _EditColumnCtlBinding.Values) { if (!_DataElementCfgs.ContainsKey(bindingInfo.ColumnName)) { throw new MB.Util.APPException(string.Format("DataFilterElements配置中不包含列 {0}", bindingInfo.ColumnName), MB.Util.APPMessageType.SysErrInfo); } DataFilterElementCfgInfo filterCfgInfo = _DataElementCfgs[bindingInfo.ColumnName]; MB.WinBase.Common.EditControlType controlType = (EditControlType)Enum.Parse(typeof(EditControlType), filterCfgInfo.EditControlType); Control ctl = bindingInfo.BindingControl; //先情况错误的消息描述。 _ErrorProvider.SetError(ctl, string.Empty); switch (controlType) { case EditControlType.TextBox: case EditControlType.Combox_DropDown: case EditControlType.Combox_DropDownList: case EditControlType.ClickButtonInput: if (!string.IsNullOrEmpty(ctl.Text.Trim())) { MB.Util.Model.QueryParameterInfo parInfo = new MB.Util.Model.QueryParameterInfo(bindingInfo.ColumnName, ctl.Text, filterCfgInfo.FilterCondition, filterCfgInfo.LimitColumn); if (controlType == EditControlType.TextBox || controlType == EditControlType.ClickButtonInput) { parInfo.MultiValue = filterCfgInfo.AllowMultiValue; // 生成子查询条件支持多值模糊查询.XiaoMin createChildQueryParameterForMultiValue(parInfo); } //end parameters.Add(parInfo); } else { if (!filterCfgInfo.Nullable) { _ErrorProvider.SetError(ctl, MSG_NOT_ALLOW_NULL_ABLE); validated = false; } } break; case EditControlType.CheckBox: CheckBox cBox = ctl as CheckBox; MB.Util.Model.QueryParameterInfo bparInfo = new MB.Util.Model.QueryParameterInfo(bindingInfo.ColumnName, cBox.Checked, filterCfgInfo.FilterCondition, filterCfgInfo.LimitColumn); bparInfo.DataType = "System.Boolean"; parameters.Add(bparInfo); break; case EditControlType.ComboCheckedListBox: MB.WinBase.Ctls.ucComboCheckedListBox comboListBox = ctl as MB.WinBase.Ctls.ucComboCheckedListBox; string str = string.Join(",", comboListBox.GetAllCheckedItemsKey()); if (!string.IsNullOrEmpty(str)) { MB.Util.Model.QueryParameterInfo parInfo = new MB.Util.Model.QueryParameterInfo(bindingInfo.ColumnName, str, filterCfgInfo.FilterCondition, filterCfgInfo.LimitColumn); parInfo.MultiValue = true; //如果设置为该控件,那么就必须允许输入多个值。 parameters.Add(parInfo); } else { if (!filterCfgInfo.Nullable) { _ErrorProvider.SetError(ctl, MSG_NOT_ALLOW_NULL_ABLE); validated = false; } } break; case EditControlType.LookUpEdit: ComboBox box = ctl as ComboBox; if (box.SelectedIndex >= 0 && !string.IsNullOrEmpty(box.Text.Trim())) { parameters.Add(new MB.Util.Model.QueryParameterInfo(bindingInfo.ColumnName, box.SelectedValue, filterCfgInfo.FilterCondition, filterCfgInfo.LimitColumn)); } else { if (!filterCfgInfo.Nullable) { _ErrorProvider.SetError(ctl, MSG_NOT_ALLOW_NULL_ABLE); validated = false; } } break; case EditControlType.DateFilterCtl: MB.WinBase.Ctls.ucEditDateFilter dateFilter = ctl as MB.WinBase.Ctls.ucEditDateFilter; if (dateFilter.DateFilterType != MB.WinBase.Ctls.ucEditDateFilter.DateFilterEditType.None) { MB.Util.Model.DateFilterStruct dateFilterValue = dateFilter.CurrentSettingValue; MB.Util.Model.QueryParameterInfo dateInfo = new MB.Util.Model.QueryParameterInfo(bindingInfo.ColumnName, dateFilterValue.BeginDate, MB.Util.DataFilterConditions.Between, filterCfgInfo.LimitColumn); dateInfo.DataType = "DateTime"; dateInfo.Value2 = dateFilterValue.EndDate; //服务端不在过滤时间的问题 if (dateInfo.Value != null) { dateInfo.Value = DateTime.Parse(((DateTime)dateInfo.Value).ToString(filterCfgInfo.Formate)); } if (dateInfo.Value2 != null) { dateInfo.Value2 = DateTime.Parse(((DateTime)dateInfo.Value2).ToString(filterCfgInfo.Formate)); } parameters.Add(dateInfo); } else { if (!filterCfgInfo.Nullable) { _ErrorProvider.SetError(ctl, MSG_NOT_ALLOW_NULL_ABLE); validated = false; } } break; case EditControlType.PopupRegionEdit: MB.WinBase.Ctls.ucPopupRegionEdit regionEdit = ctl as MB.WinBase.Ctls.ucPopupRegionEdit; if (_ClientRule.UIRuleXmlConfigInfo.ColumnsCfgEdit != null && _ClientRule.UIRuleXmlConfigInfo.ColumnsCfgEdit.ContainsKey(filterCfgInfo.Name)) { regionEdit.ColumnEditCfgInfo = _ClientRule.UIRuleXmlConfigInfo.ColumnsCfgEdit[filterCfgInfo.Name]; var curRegion = regionEdit.CurRegionEdit; foreach (var data in regionEdit.ColumnEditCfgInfo.EditCtlDataMappings) { object obj = MB.Util.MyReflection.Instance.InvokePropertyForGet(curRegion, data.SourceColumnName); if (obj != null && !string.IsNullOrEmpty(obj.ToString())) { MB.Util.Model.QueryParameterInfo param = new QueryParameterInfo(data.ColumnName, obj, MB.Util.DataFilterConditions.Equal); parameters.Add(param); } } } break; default: break; } } if (!validated) { throw new MB.Util.APPException("查询条件输入有误,请检查!", MB.Util.APPMessageType.DisplayToUser); } return(parameters.ToArray()); }
private void queryFilterData() { try { ucFilterCondition filterCtl = _StepShowControlPane[PaneViewType.FilterPane] as ucFilterCondition; MB.Util.Model.QueryParameterInfo[] filters = filterCtl.GetQueryParameters(); List <QueryParameterInfo> tempFilters = new List <QueryParameterInfo>(filters); //判断如果是自定义的条件,在查询的时候,需要再加上这个条件 if (_FilterParametersIfNoFiterPanel != null && _FilterParametersIfNoFiterPanel.Count > 0) { tempFilters.AddRange(_FilterParametersIfNoFiterPanel); filters = tempFilters.ToArray(); } if (filters == null || filters.Length == 0) { if (!filterCtl.AllowEmptyFilter) { MB.WinBase.MessageBoxEx.Show("请至少输入一个数据过滤的条件!"); return; } else { MB.Util.Model.QueryParameterInfo allFilter = new MB.Util.Model.QueryParameterInfo("0", "0", MB.Util.DataFilterConditions.Special); filters = new MB.Util.Model.QueryParameterInfo[] { allFilter }; } } //modify by aifang 2012-04-17 支持树型控件数据助手选择 //ucDataCheckListView listView = _StepShowControlPane[PaneViewType.DataSelect] as ucDataCheckListView; IDataAssistantListControl listView = _StepShowControlPane[PaneViewType.DataSelect] as IDataAssistantListControl; //modify by aifang 2012-04-17 支持树型控件数据助手选择 listView.MultiSelect = _MultiSelect; listView.ColumnEditCfgInfo = _ClumnEditCfgInfo; lnkChecked.Visible = _MultiSelect; using (MB.WinBase.WaitCursor cursor = new MB.WinBase.WaitCursor(this)) { int mainType = 0; if (_ClientRule.MainDataTypeInDoc != null) { mainType = (int)_ClientRule.MainDataTypeInDoc; } //获得动态列的MessageKey string messageHeaderKey = string.Empty; if (_ClientRule.ClientLayoutAttribute.LoadType == ClientDataLoadType.ReLoad) { messageHeaderKey = _ClientRule.ClientLayoutAttribute.MessageHeaderKey; } //添加动态列消息头 MB.XWinLib.XtraGrid.XtraGridDynamicHelper.Instance.AppendQueryBehaviorColumns(_ClientRule); using (QueryBehaviorScope scope = new QueryBehaviorScope(_ClientRule.CurrentQueryBehavior, messageHeaderKey)) { var lstDatas = this.GetFilterObjects(mainType, new List <MB.Util.Model.QueryParameterInfo>(filters)); if (lstDatas != null && lstDatas.Count > 0) { listView.SetDataSource(_ClientRule, lstDatas); _StepShowControlPane[PaneViewType.DataSelect].BringToFront(); validateButton(PaneViewType.DataSelect); validatedPageControl((lstDatas as IList).Count); } else { MB.WinBase.MessageBoxEx.Show("根据该条件查找不到数据,请重试!"); } } } } catch (Exception ex) { MB.WinBase.ApplicationExceptionTerminate.DefaultInstance.ExceptionTerminate(ex); } }