private static string BuildFilterDataSetContent(FilterItemBase filterBase) { StringBuilder result = new StringBuilder(); switch (filterBase.FilterType) { case EFilterType.Standard: var standard = filterBase as FilterStandard; string staResult = BuildFilterStringItem(EFilterType.Standard, standard.Name, standard.Connection, standard.Function, standard.Operator, standard.ValueType.ToString().ToLower(), standard.Value, "", "", "", ""); result.Append(staResult); break; case EFilterType.MultiValue: var multiValue = filterBase as FilterMultiValue; string mulResult = BuildFilterStringItem(EFilterType.MultiValue, multiValue.Name, multiValue.Connection, multiValue.Function, multiValue.Operator, "", "", multiValue.Value1Type.ToString().ToLower(), multiValue.Value1, multiValue.Value2Type.ToString().ToLower(), multiValue.Value2); result.Append(mulResult); break; case EFilterType.Group: var filter = filterBase as FilterGroup; foreach (var child in filter.Filters) { string grpResult = BuildFilterDataSetContent(child); result.Append(grpResult); } break; } return(result.ToString()); }
public string GetFilterName(object filtersCollection, FilterItemBase filter) { if (filter != null) { var count = CollectionViewModel.GetCount(filter.FilterCriteria); if (count > 0) { return(filter.Name + " (" + count + ")"); } else { return(filter.Name); } } else { if (object.Equals(filtersCollection, StaticFilters)) { return(StaticFiltersName); } if (object.Equals(filtersCollection, CustomFilters)) { return(CustomFiltersName); } if (object.Equals(filtersCollection, Groups)) { return(GroupFiltersName); } } return(null); }
private static void BuildFilterDataSet(ref StringBuilder result, FilterItemBase filterItemBase, FilterItemBase preItemBase) { var tempResult = new StringBuilder(); var curFilterStr = BuildFilterDataSetContent(filterItemBase); if (preItemBase != null) { var preFilterStr = result.ToString(); dynamic filterObj = filterItemBase as FilterStandard; if (filterItemBase.FilterType == EFilterType.Standard) { filterObj = filterItemBase as FilterStandard; } else if (filterItemBase.FilterType == EFilterType.MultiValue) { filterObj = filterItemBase as FilterMultiValue; } else if (filterItemBase.FilterType == EFilterType.Group) { filterObj = filterItemBase as FilterGroup; } tempResult.Append("{"); tempResult.Append($"{filterObj.Connection.ToString().ToLower()}: [{curFilterStr},{preFilterStr}]"); tempResult.Append("}"); } else { tempResult.Append(curFilterStr); } result = tempResult; }
protected virtual T CreateCustomFilterViewModel <T>(FilterItemBase filterItem) where T : FilterViewModelBase, new() { T viewModel = ViewModelSource.Create <T>(); ViewModelHelper.EnsureViewModel(viewModel, CollectionViewModel, filterItem); return(viewModel); }
void UpdateSelectedItemByFilter(FilterItemBase item) { var result = OfficeNavigationBar.Items.FirstOrDefault(navItem => object.Equals(navItem.Tag, item)); if (result != null) { OfficeNavigationBar.SelectedItem = result; } }
void RegisterFilterItem(OfficeNavigationBar navigationBar, FilterItemBase item) { NavigationBarItem navItem = new NavigationBarItem(); navItem.Tag = item; navItem.Text = ViewModel.GetFilterName(ViewModel.StaticFilters, item); navItem.Name = "filterItem" + item.Name.Replace(" ", string.Empty); navigationBar.Items.Add(navItem); navItem.BindCommand((f) => ViewModel.Select(f), ViewModel, () => (item as FilterTreeViewModel <TEntity, TID, TUnitOfWork> .FilterItem)); }
void ApplyFilter(FilterItemBase filterItem) { if ((filterItem != null) && !object.ReferenceEquals(filterItem.FilterCriteria, null)) { var converter = new CriteriaOperatorToExpressionConverter <TEntity>(); CollectionViewModel.FilterExpression = converter.Convert(filterItem.FilterCriteria); } else { CollectionViewModel.FilterExpression = null; } }
void NewGroupCore(FilterItemBase newFilterItem) { GroupFilterViewModel viewModel = CreateCustomFilterViewModel <GroupFilterViewModel>(newFilterItem); if (ShowFilterDialog(viewModel, "Group Filter")) { if (viewModel.Save) { AddNewGroupFilter(newFilterItem); RaiseFilterTreeChanged(); } SelectedItem = newFilterItem; } }
private void WriteFilter(StringWriter w, FilterItemBase filter, string parent, ref int varindex) { List <string> parameters = new List <string>(); switch (filter.FilterType) { case EFilterType.Custom: { w.Write(parent + ".AddExpression(item => "); FilterCustom custom = (FilterCustom)filter; var result = CodeParameterPattern.Matches(custom.Code); foreach (Match item in result) { var name = item.Groups[1].Value; if (!parameters.Contains(name)) { parameters.Add(name); } } if (parameters.Count == 0) { w.Write(custom.Code); } else { w.Write(CodeParameterPattern.Replace(custom.Code, m => m.Groups[1].Value)); } } break; case EFilterType.MultiValue: { FilterMultiValue stan = (FilterMultiValue)filter; string expression; EDataBaseType expressionDataType; ProcessExpression(stan.Name, stan.Function, stan.FunctionParemeter, out expression, out expressionDataType); switch (stan.Operator) { case EOperator.Between: case EOperator.NotBetween: string value1 = QueryMetadata.GetRightExpression(expressionDataType, stan.Value1Type, stan.Value1, parameters, false); List <string> valueNames = new List <string>(); if (stan.Value1Type != EValueType.Property) { value1 = ProcessVariable(w, value1, ref varindex); if (stan.Value1Type == EValueType.Const && stan.Value1.StartsWith("@")) { valueNames.Add(value1); } } string value2 = QueryMetadata.GetRightExpression(expressionDataType, stan.Value2Type, stan.Value2, parameters, false); if (stan.Value2Type != EValueType.Property) { value2 = ProcessVariable(w, value2, ref varindex); if (stan.Value2Type == EValueType.Const && stan.Value2.StartsWith("@")) { valueNames.Add(value2); } } if (valueNames.Count > 0) { w.WriteLine($"if({string.Join(" && ", valueNames.Select(a => a + " != null").ToArray())})"); } w.Write(parent + ".AddExpression(item => "); w.Write(QueryMetadata.Operators[stan.Operator], expression, value1, value2); break; } } break; case EFilterType.Standard: { FilterStandard stan = (FilterStandard)filter; string expression; EDataBaseType expressionDataType; ProcessExpression(stan.Name, stan.Function, stan.FunctionParemeter, out expression, out expressionDataType); switch (stan.Operator) { case EOperator.IsNull: case EOperator.NotIsNull: w.Write(parent + ".AddExpression(item => "); w.Write(QueryMetadata.Operators[stan.Operator], expression); break; default: bool isArray = stan.Operator == EOperator.IN; string value = QueryMetadata.GetRightExpression(expressionDataType, stan.ValueType, stan.Value, parameters, isArray); if (stan.ValueType != EValueType.Property) { value = ProcessVariable(w, value, ref varindex); if (stan.ValueType == EValueType.Const && stan.Value.StartsWith("@")) { w.WriteLine($"if({value}!=null)"); } } w.Write(parent + ".AddExpression(item => "); w.Write(QueryMetadata.Operators[stan.Operator], expression, value); break; } } break; } w.Write(",EExpressionConnect." + filter.Connection.ToString()); if (parameters.Count > 0) { w.Write(",new string[] { " + string.Join(",", parameters.Distinct().Select(a => "\"" + a + "\"").ToArray()) + " }"); } w.WriteLine(");"); }
private static string GetFilterContent(MemberBase memberBase) { StringBuilder result = new StringBuilder(); switch (memberBase.MemberType) { case EMemberType.DataSet: DataSet dats = memberBase as DataSet; if (dats.IsCollection) { #region 集合 FilterItemBase parentItemBase = null; for (var i = 0; i < dats.Filters.Count; i++) { var item = dats.Filters[i]; if (i == 0) { BuildFilterDataSet(ref result, item, null); } else { BuildFilterDataSet(ref result, item, parentItemBase); } parentItemBase = item; } #endregion } else { #region 对象 var QueryParametersObj = (from t in dats.Children.OfType <QueryParameters>() select t).FirstOrDefault(); if (QueryParametersObj != null) { result.Append(GetFilterObjectItem(QueryParametersObj)); } #endregion } break; case EMemberType.Objects: Objects objs = memberBase as Objects; if (objs.IsCollection) { #region 集合 FilterItemBase parentItemBase = null; for (var i = 0; i < objs.Filters.Count; i++) { var item = objs.Filters[i]; if (i == 0) { BuildFilterDataSet(ref result, item, null); } else { BuildFilterDataSet(ref result, item, parentItemBase); } parentItemBase = item; } #endregion } else { #region 对象 var QueryParametersObj = (from t in objs.Children.OfType <QueryParameters>() select t).FirstOrDefault(); if (QueryParametersObj != null) { result.Append(GetFilterObjectItem(QueryParametersObj)); } #endregion } break; } return(result.ToString()); }
public QueryFilterCriteriaEventArgs(FilterItemBase item) { this.item = item; }