Exemplo n.º 1
0
        private bool DoesFilterTextNeedToBeEmpty(FilterOperationItem filterOperationItem)
        {
            if ((filterOperationItem.FilterOption == Enums.FilterOperation.LastXDays || filterOperationItem.FilterOption == Enums.FilterOperation.LastXWeeks || filterOperationItem.FilterOption == Enums.FilterOperation.LastXMonths) && FilterPeriod == 0)
            {
                return(false);
            }

            return(true);
        }
Exemplo n.º 2
0
        protected Predicate <object> GenerateFilterPredicate(string propertyName, string filterValue, Type objType, Type propType, FilterOperationItem filterItem)
        {
            ParameterExpression objParam = System.Linq.Expressions.Expression.Parameter(typeof(object), "x");
            UnaryExpression     param    = System.Linq.Expressions.Expression.TypeAs(objParam, objType);
            var prop = System.Linq.Expressions.Expression.Property(param, propertyName);
            var val  = System.Linq.Expressions.Expression.Constant(filterValue);

            switch (filterItem.FilterOption)
            {
            case Enums.FilterOperation.Contains:
                return(ExpressionHelper.GenerateGeneric(prop, val, propType, objParam, "Contains"));

            case Enums.FilterOperation.EndsWith:
                return(ExpressionHelper.GenerateGeneric(prop, val, propType, objParam, "EndsWith"));

            case Enums.FilterOperation.StartsWith:
                return(ExpressionHelper.GenerateGeneric(prop, val, propType, objParam, "StartsWith"));

            case Enums.FilterOperation.Equals:
                return(ExpressionHelper.GenerateEquals(prop, filterValue, propType, objParam));

            case Enums.FilterOperation.NotEquals:
                return(ExpressionHelper.GenerateNotEquals(prop, filterValue, propType, objParam));

            case Enums.FilterOperation.GreaterThanEqual:
                return(ExpressionHelper.GenerateGreaterThanEqual(prop, filterValue, propType, objParam));

            case Enums.FilterOperation.LessThanEqual:
                return(ExpressionHelper.GenerateLessThanEqual(prop, filterValue, propType, objParam));

            case Enums.FilterOperation.GreaterThan:
                return(ExpressionHelper.GenerateGreaterThan(prop, filterValue, propType, objParam));

            case Enums.FilterOperation.LessThan:
                return(ExpressionHelper.GenerateLessThan(prop, filterValue, propType, objParam));

            default:
                throw new ArgumentException("Could not decode Search Mode.  Did you add a new value to the enum, or send in Unknown?");
            }
        }
Exemplo n.º 3
0
        void ColumnFilterControl_Loaded(object sender, RoutedEventArgs e)
        {
            DataGridColumn       column    = null;
            DataGridColumnHeader colHeader = null;

            UIElement parent = (UIElement)VisualTreeHelper.GetParent(this);

            while (parent != null)
            {
                parent = (UIElement)VisualTreeHelper.GetParent(parent);
                if (colHeader == null)
                {
                    colHeader = parent as DataGridColumnHeader;
                }

                if (Grid == null)
                {
                    Grid = parent as JibGrid;
                }
            }

            if (colHeader != null)
            {
                column = colHeader.Column;
            }

            CanUserFilter         = Grid.CanUserFilter;
            CanUserFreeze         = Grid.CanUserFreeze;
            CanUserGroup          = Grid.CanUserGroup;
            CanUserSelectDistinct = Grid.CanUserSelectDistinct;


            if (column != null)
            {
                object oCanUserFilter = column.GetValue(ColumnConfiguration.CanUserFilterProperty);
                if (oCanUserFilter != null)
                {
                    CanUserFilter = (bool)oCanUserFilter;
                }

                object oCanUserFreeze = column.GetValue(ColumnConfiguration.CanUserFreezeProperty);
                if (oCanUserFreeze != null)
                {
                    CanUserFreeze = (bool)oCanUserFreeze;
                }

                object oCanUserGroup = column.GetValue(ColumnConfiguration.CanUserGroupProperty);
                if (oCanUserGroup != null)
                {
                    CanUserGroup = (bool)oCanUserGroup;
                }

                object oCanUserSelectDistinct = column.GetValue(ColumnConfiguration.CanUserSelectDistinctProperty);
                if (oCanUserSelectDistinct != null)
                {
                    CanUserSelectDistinct = (bool)oCanUserSelectDistinct;
                }
            }


            if (Grid.FilterType == null)
            {
                return;
            }

            FilterColumnInfo = new OptionColumnInfo(column, Grid.FilterType);

            Grid.RegisterOptionControl(this);

            FilterOperations.Clear();
            if (FilterColumnInfo.PropertyType != null)
            {
                if (TypeHelper.IsStringType(FilterColumnInfo.PropertyType))
                {
                    FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.Contains, "Contains", "/Jib.WPF.Controls;component/Images/Contains.png"));
                    FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.StartsWith, "Starts With", "/Jib.WPF.Controls;component/Images/StartsWith.png"));
                    FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.EndsWith, "Ends With", "/Jib.WPF.Controls;component/Images/EndsWith.png"));
                }
                FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.Equals, "Equals", "/Jib.WPF.Controls;component/Images/Equal.png"));
                if (TypeHelper.IsNumbericType(FilterColumnInfo.PropertyType))
                {
                    FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.GreaterThan, "Greater Than", "/Jib.WPF.Controls;component/Images/GreaterThan.png"));
                    FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.GreaterThanEqual, "Greater Than or Equal", "/Jib.WPF.Controls;component/Images/GreaterThanEqual.png"));
                    FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.LessThan, "Less Than", "/Jib.WPF.Controls;component/Images/LessThan.png"));
                    FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.LessThanEqual, "Greater Than or Equal", "/Jib.WPF.Controls;component/Images/GreaterThanEqual.png"));
                    FilterOperations.Add(new FilterOperationItem(Enums.FilterOperation.NotEquals, "Not Equal", "/Jib.WPF.Controls;component/Images/NotEqual.png"));
                }
                SelectedFilterOperation = FilterOperations[0];
            }

            if (FilterColumnInfo != null && FilterColumnInfo.IsValid)
            {
                foreach (var i in DistinctPropertyValues.Where(i => i.IsChecked))
                {
                    i.IsChecked = false;
                }
                DistinctPropertyValues.Clear();
                FilterText = string.Empty;
                _boundColumnPropertyAccessor = null;

                if (!string.IsNullOrWhiteSpace(FilterColumnInfo.PropertyPath))
                {
                    if (FilterColumnInfo.PropertyPath.Contains('.'))
                    {
                        throw new ArgumentException(string.Format("This version of the grid does not support a nested property path such as '{0}'.  Please make a first-level property for filtering and bind to that.", FilterColumnInfo.PropertyPath));
                    }

                    this.Visibility = System.Windows.Visibility.Visible;
                    ParameterExpression arg = System.Linq.Expressions.Expression.Parameter(typeof(object), "x");
                    System.Linq.Expressions.Expression expr = System.Linq.Expressions.Expression.Convert(arg, Grid.FilterType);
                    expr = System.Linq.Expressions.Expression.Property(expr, Grid.FilterType, FilterColumnInfo.PropertyPath);
                    System.Linq.Expressions.Expression conversion = System.Linq.Expressions.Expression.Convert(expr, typeof(object));
                    _boundColumnPropertyAccessor = System.Linq.Expressions.Expression.Lambda <Func <object, object> >(conversion, arg).Compile();
                }
                else
                {
                    this.Visibility = System.Windows.Visibility.Collapsed;
                }
                object oDefaultFilter = column.GetValue(ColumnConfiguration.DefaultFilterProperty);
                if (oDefaultFilter != null)
                {
                    FilterText = (string)oDefaultFilter;
                }
            }

            CalcControlVisibility();
        }
Exemplo n.º 4
0
        protected Predicate <object> GenerateFilterPredicate(string propertyName, string filterValue, Type objType, Type propType, FilterOperationItem filterItem)
        {
            ParameterExpression objParam = System.Linq.Expressions.Expression.Parameter(typeof(object), "x");
            UnaryExpression     param    = System.Linq.Expressions.Expression.TypeAs(objParam, objType);
            var prop = System.Linq.Expressions.Expression.Property(param, propertyName);
            var val  = System.Linq.Expressions.Expression.Constant(filterValue);

            switch (filterItem.FilterOption)
            {
            case Enums.FilterOperation.Contains:
                return(ExpressionHelper.GenerateGeneric(prop, val, propType, objParam, "Contains"));

            case Enums.FilterOperation.EndsWith:
                return(ExpressionHelper.GenerateGeneric(prop, val, propType, objParam, "EndsWith"));

            case Enums.FilterOperation.StartsWith:
                return(ExpressionHelper.GenerateGeneric(prop, val, propType, objParam, "StartsWith"));

            case Enums.FilterOperation.Equals:
                return(ExpressionHelper.GenerateEquals(prop, filterValue, propType, objParam));

            case Enums.FilterOperation.NotEquals:
                return(ExpressionHelper.GenerateNotEquals(prop, filterValue, propType, objParam));

            case Enums.FilterOperation.GreaterThanEqual:
                return(ExpressionHelper.GenerateGreaterThanEqual(prop, filterValue, propType, objParam));

            case Enums.FilterOperation.LessThanEqual:
                return(ExpressionHelper.GenerateLessThanEqual(prop, filterValue, propType, objParam));

            case Enums.FilterOperation.GreaterThan:
                return(ExpressionHelper.GenerateGreaterThan(prop, filterValue, propType, objParam));

            case Enums.FilterOperation.LessThan:
                return(ExpressionHelper.GenerateLessThan(prop, filterValue, propType, objParam));

            case Enums.FilterOperation.Today:
                return(ExpressionHelper.GenerateBetweenValues(prop, DateTime.Today.ToString(), DateTime.Today.AddDays(1.0).ToString(), propType, objParam));

            case Enums.FilterOperation.Yesterday:
                return(ExpressionHelper.GenerateBetweenValues(prop, DateTime.Today.AddDays(-1.0).ToString(), DateTime.Today.ToString(), propType, objParam));

            case Enums.FilterOperation.LastXDays:
                if (FilterPeriod == 0)
                {
                    return(ExpressionHelper.GenerateBetweenValues(prop, DateTime.Today.AddDays(-1.0).ToString(), DateTime.Today.ToString(), propType, objParam));
                }
                else
                {
                    return(ExpressionHelper.GenerateBetweenValues(prop, DateTime.Today.AddDays(-1 * FilterPeriod).ToString(), DateTime.Today.ToString(), propType, objParam));
                }

            case Enums.FilterOperation.LastXWeeks:
                if (FilterPeriod == 0)
                {
                    return(ExpressionHelper.GenerateBetweenValues(prop, DateTime.Today.AddDays(-7.0).ToString(), DateTime.Today.ToString(), propType, objParam));
                }
                else
                {
                    return(ExpressionHelper.GenerateBetweenValues(prop, DateTime.Today.AddDays(-7 * FilterPeriod).ToString(), DateTime.Today.ToString(), propType, objParam));
                }

            case Enums.FilterOperation.LastXMonths:
                if (FilterPeriod == 0)
                {
                    return(ExpressionHelper.GenerateBetweenValues(prop, DateTime.Today.AddMonths(-1).ToString(), DateTime.Today.ToString(), propType, objParam));
                }
                else
                {
                    return(ExpressionHelper.GenerateBetweenValues(prop, DateTime.Today.AddMonths(-1 * FilterPeriod).ToString(), DateTime.Today.ToString(), propType, objParam));
                }

            default:
                throw new ArgumentException("Could not decode Search Mode.  Did you add a new value to the enum, or send in Unknown?");
            }
        }