private static void BuildSpecification(RadDataFilter dataFilter) { SpecificationDto specificationDto = GetFilter(dataFilter); specificationDto.CompositeFilter.Filters.Clear(); if (dataFilter.ViewModel.CompositeFilter.LogicalOperator == Telerik.Windows.Data.FilterCompositionLogicalOperator.And) { specificationDto.CompositeFilter.LogicalOperator = CompositeFilterLogicalOperator.And; } else { specificationDto.CompositeFilter.LogicalOperator = CompositeFilterLogicalOperator.Or; } foreach (FilterViewModel filter in dataFilter.ViewModel.CompositeFilter.Filters) { if (filter.SimpleFilter.Member != null) { var rule = new Filter() { Property = filter.SimpleFilter.Member, Operator = filter.SimpleFilter.Operator.ToString(), Value = filter.SimpleFilter.Value.ToString() }; specificationDto.CompositeFilter.Filters.Add(rule); } } }
private static void OnItemPropertyDefinitionsPropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e) { RadDataFilter dataFilter = dependencyObject as RadDataFilter; IEnumerable <ItemPropertyDefinition> definitions = e.NewValue as IEnumerable <ItemPropertyDefinition>; if (dataFilter != null && definitions != null) { dataFilter.ItemPropertyDefinitions.Clear(); dataFilter.ItemPropertyDefinitions.AddRange(definitions); } }
private static void OnFilterDescriptorsPropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e) { RadDataFilter dataFilter = dependencyObject as RadDataFilter; INotifyCollectionChanged descriptors = e.NewValue as INotifyCollectionChanged; if (dataFilter != null && descriptors != null) { FilterDescriptorBindingBehavior behavior = new FilterDescriptorBindingBehavior(dataFilter, descriptors); behavior.Attach(); } }
/// <summary> /// Initializes a new instance of the <see cref="FieldPathPropertyDefinition"/> class. /// </summary> /// <param name="dataFilter"> /// The data filter. /// </param> /// <param name="memberDefinition"> /// The member definition. /// </param> public FieldPathPropertyDefinition(RadDataFilter dataFilter, IFilterMemberDefinition memberDefinition) { if (dataFilter == null) throw new ArgumentNullException("dataFilter"); if (memberDefinition == null) throw new ArgumentNullException("memberDefinition"); _dataFilter = dataFilter; _memberDefinition = memberDefinition; PropertyName = memberDefinition.MemberName; PropertyType = memberDefinition.MemberType; DisplayName = memberDefinition.DisplayName; }
public RadDataFilterHelper(RadDataFilter dataFilter) { dataFilter.CanUserCreateCompositeFilters = false; dataFilter.ViewModel.CompositeFilter.PropertyChanged += (sender, args) => { BuildSpecification(dataFilter); }; dataFilter.ViewModel.CompositeFilter.Filters.CollectionChanged += (sender, args) => { foreach (FilterViewModel filterViewModel in dataFilter.ViewModel.CompositeFilter.Filters) { filterViewModel.SimpleFilter.PropertyChanged += (grid, arguments) => { BuildSpecification(dataFilter); }; } }; dataFilter.FilterDescriptors.Add(new Telerik.Windows.Data.FilterDescriptor("IsActive", Telerik.Windows.Data.FilterOperator.IsEqualTo, true)); BuildSpecification(dataFilter); }
/// <summary> /// Get FilterDescriptorCollection from Expression /// </summary> /// <param name="filterExpression">Expression</param> /// <param name="radDataFilter">The RAD data filter.</param> /// <returns>CompositeFilterDescriptorCollection</returns> public static CompositeFilterDescriptorCollection GetFilterDescriptorCollection(this string filterExpression, RadDataFilter radDataFilter) { var descriptor = Veyron.SharedTypes.FilterDescriptor.FromJSON(filterExpression); var result = new CompositeFilterDescriptorCollection { LogicalOperator = descriptor.LogicalOperator.ToRadLogicalOperator() }; if (descriptor.FilterDescriptors == null || descriptor.FilterDescriptors.Count == 0) { if (descriptor.Operator != FilterOperator.Any) { result.Add(GetRadFilterDescriptor(descriptor, radDataFilter)); } } else { CompositeFilterDescriptor(descriptor, result, radDataFilter); } return result; }
public static SpecificationDto GetFilter(RadDataFilter dataFilter) { return (SpecificationDto)dataFilter.GetValue(FilterProperty); }
public static void SetFilter(RadDataFilter dataFilter, SpecificationDto value) { dataFilter.SetValue(FilterProperty, value); }
public static SpecificationDto GetFilter(RadDataFilter dataFilter) { return((SpecificationDto)dataFilter.GetValue(FilterProperty)); }
private static FilterDescriptor GetRadFilterDescriptor(Veyron.SharedTypes.IFilterDescriptor descriptor, RadDataFilter radDataFilter) { var filterDescriptor = new FilterDescriptor { Member = descriptor.ColumnName, Operator = (Telerik.Windows.Data.FilterOperator) Enum.Parse(typeof(Telerik.Windows.Data.FilterOperator), descriptor.Operator.ToString(), true) }; var fieldValue = descriptor.Value as FilterValue; if (fieldValue != null) { if (filterDescriptor.MemberType == typeof(string)) { filterDescriptor.Value = fieldValue.ToString(); } DynamicDataFilterBehavior.SetSystemValue(filterDescriptor, fieldValue); } else { DynamicDataFilterBehavior.SetSystemValue(filterDescriptor, null); var itemDef = radDataFilter.ItemPropertyDefinitions.FirstOrDefault(x => x.PropertyName == filterDescriptor.Member); if (itemDef != null) { if (itemDef.PropertyType == typeof(IStateInfo)) { Guid stateGuid; filterDescriptor.Value = Guid.TryParse(SafeTypeConverter.Convert<string>(descriptor.Value), out stateGuid) ? new StateInfoClass { Guid = stateGuid } : new StateInfoClass { Id = SafeTypeConverter.Convert<int>(descriptor.Value) }; } else { filterDescriptor.Value = itemDef.PropertyType == typeof(IInfoClass) ? new InfoClassPlaceholder(descriptor.Value) : SafeTypeConverter.Convert(descriptor.Value, itemDef.PropertyType); } } else { filterDescriptor.Value = descriptor.Value; } } return filterDescriptor; }
/// <summary> /// Composites the filter descriptor. /// </summary> /// <param name="descriptor">The descriptor.</param> /// <param name="result">The result.</param> /// <param name="radDataFilter">The RAD data filter.</param> private static void CompositeFilterDescriptor(Veyron.SharedTypes.IFilterDescriptor descriptor, ICompositeFilterDescriptor result, RadDataFilter radDataFilter) { foreach (var filter in descriptor.FilterDescriptors) { if (filter.FilterDescriptors == null || filter.FilterDescriptors.Count == 0) result.FilterDescriptors.Add(GetRadFilterDescriptor(filter, radDataFilter)); else { var r = new CompositeFilterDescriptor { LogicalOperator = filter.LogicalOperator.ToRadLogicalOperator() }; CompositeFilterDescriptor(filter, r, radDataFilter); result.FilterDescriptors.Add(r); } } }
//void dataFilter_Loaded(object sender, RoutedEventArgs e) //{ // Transfer(GetFilterDescriptors(dataFilter) as IList, dataFilter.FilterDescriptors); // descriptors.CollectionChanged -= CollectionChanged; // descriptors.CollectionChanged += CollectionChanged; //} public FilterDescriptorBindingBehavior(RadDataFilter dataFilter, INotifyCollectionChanged descriptors) { this.dataFilter = dataFilter; this.descriptors = descriptors; }
/// <summary> /// Get FilterDescriptorCollection from Expression. /// </summary> /// <param name="filterDescriptor">Filter Descriptor.</param> /// <param name="radDataFilter">The RAD data filter.</param> /// <returns>CompositeFilterDescriptorCollection.</returns> public static CompositeFilterDescriptorCollection GetFilterDescriptorCollection(this Veyron.SharedTypes.IFilterDescriptor filterDescriptor, RadDataFilter radDataFilter) { if (filterDescriptor == null) return null; var result = new CompositeFilterDescriptorCollection { LogicalOperator = filterDescriptor.LogicalOperator.ToRadLogicalOperator() }; if (filterDescriptor.FilterDescriptors == null || filterDescriptor.FilterDescriptors.Count == 0) { if (filterDescriptor.Operator != FilterOperator.Any) result.Add(GetRadFilterDescriptor(filterDescriptor, radDataFilter)); } else CompositeFilterDescriptor(filterDescriptor, result, radDataFilter); return result; }
public MyFilterDescriptorBindingBehavior(RadDataFilter dataFilter, INotifyCollectionChanged descriptors) { this.dataFilter = dataFilter; this.descriptors = descriptors; }