public void Add(
     FilterExpression.BinaryOperation binaryOperator,
     GridKnownFunction function,
     params object[] values)
 {
     this.Add(new FilterPredicate(binaryOperator, function, values));
 }
Пример #2
0
 public FilterPredicate(
     FilterExpression.BinaryOperation binaryOperator,
     GridKnownFunction function)
 {
     this.binaryOperator = binaryOperator;
     this.function       = function;
     this.filterFunction = FilterFunction.GetFilterFunction(this.function);
 }
Пример #3
0
 public FilterExpression(
     string fieldName,
     FilterExpression.BinaryOperation binaryOperation,
     GridKnownFunction function,
     params object[] values)
     : this(binaryOperation, function, values)
 {
     this.PropertyName = fieldName;
 }
Пример #4
0
 public FilterExpression(
     FilterExpression.BinaryOperation binaryOperation,
     GridKnownFunction function,
     params object[] values)
     : this()
 {
     this.LogicalOperator = GridViewHelper.GetLogicalOperator(binaryOperation);
     this.predicates.Add(new FilterPredicate(FilterExpression.BinaryOperation.AND, function, values));
 }
Пример #5
0
        internal static FilterOperator GetFilterOperator(GridKnownFunction function)
        {
            switch (function)
            {
            case GridKnownFunction.Contains:
                return(FilterOperator.Contains);

            case GridKnownFunction.DoesNotContain:
                return(FilterOperator.NotContains);

            case GridKnownFunction.StartsWith:
                return(FilterOperator.StartsWith);

            case GridKnownFunction.EndsWith:
                return(FilterOperator.EndsWith);

            case GridKnownFunction.EqualTo:
                return(FilterOperator.IsEqualTo);

            case GridKnownFunction.NotEqualTo:
                return(FilterOperator.IsNotEqualTo);

            case GridKnownFunction.GreaterThan:
                return(FilterOperator.IsGreaterThan);

            case GridKnownFunction.LessThan:
                return(FilterOperator.IsLessThan);

            case GridKnownFunction.GreaterThanOrEqualTo:
                return(FilterOperator.IsGreaterThanOrEqualTo);

            case GridKnownFunction.LessThanOrEqualTo:
                return(FilterOperator.IsLessThanOrEqualTo);

            case GridKnownFunction.IsEmpty:
                return(FilterOperator.IsLike);

            case GridKnownFunction.NotIsEmpty:
                return(FilterOperator.IsNotLike);

            case GridKnownFunction.IsNull:
                return(FilterOperator.IsNull);

            case GridKnownFunction.NotIsNull:
                return(FilterOperator.IsNotNull);

            default:
                return(FilterOperator.None);
            }
        }
Пример #6
0
 public FilterPredicate(
     FilterExpression.BinaryOperation binaryOperator,
     GridKnownFunction function,
     params object[] values)
     : this(binaryOperator, function)
 {
     if (values == null)
     {
         return;
     }
     for (int index = 0; index < Math.Min(2, values.Length); ++index)
     {
         this.values.Add(values[index]);
     }
 }
Пример #7
0
        private static string GetCompositeExpression(
            string name,
            GridKnownFunction function,
            params object[] values)
        {
            if (function != GridKnownFunction.Between && function != GridKnownFunction.NotBetween)
            {
                return((string)null);
            }
            string str1 = values[0] is string? "'" + values[0] + "'" : values[0].ToString();
            string str2 = values[1] is string? "'" + values[1] + "'" : values[1].ToString();

            if (function == GridKnownFunction.Between)
            {
                return(string.Format("{0} >= {1} AND {0} <= {2}", (object)name, (object)str1, (object)str2));
            }
            return(string.Format("NOT ({0} >= {1} AND {0} <= {2})", (object)name, (object)str1, (object)str2));
        }
Пример #8
0
 private void SetFilterParameters(IndGridBoundColumn col, out string comparerStart, out string comparerEnd, out GridKnownFunction function)
 {
     comparerStart = String.Empty;
     comparerEnd   = String.Empty;
     function      = GridKnownFunction.NoFilter;
     if (IsColumnNumeric(col))
     {
         comparerStart = "= ";
         comparerEnd   = String.Empty;
         function      = GridKnownFunction.EqualTo;
     }
     if (col.DataType == typeof(string))
     {
         comparerStart = "LIKE '%";
         comparerEnd   = "%'";
         function      = GridKnownFunction.Contains;
     }
     if (col.DataType == typeof(DateTime))
     {
         //comparerStart = "= '";
         //comparerEnd = "'";
         function = GridKnownFunction.Between;
     }
 }
Пример #9
0
        private void FilterSpecialColumn(IndGridBoundColumn col, IndFilterItem filterItem, string comparerStart, string comparerEnd, GridKnownFunction function)
        {
            if (col.Cell.Controls[1] is DropDownList)
            {
                DropDownList d = (DropDownList)col.Cell.Controls[1];
                if (filterItem.FilterExpression.Length == 0)
                {
                    filterItem.FilterExpression.Append("([" + col.UniqueName + "] " + comparerStart + ((d.SelectedValue == "All") ? String.Empty : d.SelectedValue) + comparerEnd);
                }
                else
                {
                    filterItem.FilterExpression.Append(" AND [" + col.UniqueName + "] " + comparerStart + ((d.SelectedValue == "All") ? String.Empty : d.SelectedValue) + comparerEnd);
                }
                col.CurrentFilterFunction = function;
                col.CurrentFilterValue    = ((d.SelectedValue == "All") ? String.Empty : d.SelectedValue);
                filterItem.FilterValues.Add(col.UniqueName, (d.SelectedValue == "All") ? String.Empty : d.SelectedValue);
            }

            if (col.Cell.Controls[1] is IndDatePicker)
            {
                IndDatePicker datePicker = (IndDatePicker)col.Cell.Controls[1];
                if (datePicker.SelectedDate != null)
                {
                    if (filterItem.FilterExpression.Length == 0)
                    {
                        filterItem.FilterExpression.Append("([" + col.UniqueName + "] >= '" + ((DateTime)datePicker.SelectedDate).ToShortDateString() + " 00:00:00.000' AND " +
                                                           "[" + col.UniqueName + "] <= '" + ((DateTime)datePicker.SelectedDate).ToShortDateString() + " 23:59:59.999'");
                    }
                    else
                    {
                        filterItem.FilterExpression.Append(" AND [" + col.UniqueName + "] >= '" + ((DateTime)datePicker.SelectedDate).ToShortDateString() + " 00:00:00.000' AND " +
                                                           "[" + col.UniqueName + "] <= '" + ((DateTime)datePicker.SelectedDate).ToShortDateString() + " 23:59:59.999'");
                    }
                }
                col.CurrentFilterFunction = function;
                col.CurrentFilterValue    = (datePicker.SelectedDate != null) ? ((DateTime)datePicker.SelectedDate).ToShortDateString() : null;
                filterItem.FilterValues.Add(col.UniqueName, (datePicker.SelectedDate != null) ? ((DateTime)datePicker.SelectedDate).ToShortDateString() : String.Empty);
            }
        }
Пример #10
0
 private void FilterCommonColumn(IndGridBoundColumn col, string value, IndFilterItem filterItem, string comparerStart, string comparerEnd, GridKnownFunction function)
 {
     if (String.IsNullOrEmpty(value))
     {
         col.CurrentFilterFunction = function;
         col.CurrentFilterValue    = value;
         return;
     }
     if (filterItem.FilterExpression.Length == 0)
     {
         filterItem.FilterExpression.Append("([" + col.UniqueName + "] " + comparerStart + value + comparerEnd);
     }
     else
     {
         filterItem.FilterExpression.Append(" AND [" + col.UniqueName + "] " + comparerStart + value + comparerEnd);
     }
     col.CurrentFilterFunction = function;
     col.CurrentFilterValue    = value.Replace("''", "'");
     filterItem.FilterValues.Add(col.UniqueName, value.Replace("''", "'"));
 }
Пример #11
0
        private static string GetSingleExpression(
            string name,
            GridKnownFunction gridKnownFunction,
            params object[] values)
        {
            string str1 = string.Empty;
            string str2 = string.Empty;

            if (values.Length > 0)
            {
                str1 = values[0] is string? "'" + values[0] + "'" : values[0].ToString();
                str2 = DataUtils.EscapeLikeValue(values[0].ToString());
            }
            switch (gridKnownFunction)
            {
            case GridKnownFunction.Contains:
                return(string.Format("{0} LIKE '%{1}%'", (object)name, (object)str2));

            case GridKnownFunction.DoesNotContain:
                return(string.Format("{0} NOT LIKE '%{1}%'", (object)name, (object)str2));

            case GridKnownFunction.StartsWith:
                return(string.Format("{0} LIKE '{1}%'", (object)name, (object)str2));

            case GridKnownFunction.EndsWith:
                return(string.Format("{0} LIKE '%{1}'", (object)name, (object)str2));

            case GridKnownFunction.EqualTo:
                return(string.Format("{0} = {1}", (object)name, (object)str1));

            case GridKnownFunction.NotEqualTo:
                return(string.Format("{0} <> {1}", (object)name, (object)str1));

            case GridKnownFunction.GreaterThan:
                return(string.Format("{0} > {1}", (object)name, (object)str1));

            case GridKnownFunction.LessThan:
                return(string.Format("{0} < {1}", (object)name, (object)str1));

            case GridKnownFunction.GreaterThanOrEqualTo:
                return(string.Format("{0} >= {1}", (object)name, (object)str1));

            case GridKnownFunction.LessThanOrEqualTo:
                return(string.Format("{0} <= {1}", (object)name, (object)str1));

            case GridKnownFunction.IsEmpty:
                return(string.Format("{0} LIKE ''", (object)name));

            case GridKnownFunction.NotIsEmpty:
                return(string.Format("{0} NOT LIKE ''", (object)name));

            case GridKnownFunction.IsNull:
                return(string.Format("{0} IS NULL", (object)name));

            case GridKnownFunction.NotIsNull:
                return(string.Format("NOT ({0} IS NULL)", (object)name));

            default:
                return((string)null);
            }
        }
Пример #12
0
    protected virtual string GetFilterExpression(GridKnownFunction filterFunction, string columnName, string columnValue, bool isDynamicQuery)
    {
        var quatationMark = isDynamicQuery ? "''" : "'";

        switch (filterFunction)
        {
        case GridKnownFunction.NoFilter:
            break;

        case GridKnownFunction.Contains:
            if (!string.IsNullOrEmpty(columnValue))
            {
                return($@"([{columnName}] LIKE {quatationMark}%{columnValue}%{quatationMark})");
            }
            break;

        case GridKnownFunction.DoesNotContain:
            if (!string.IsNullOrEmpty(columnValue))
            {
                return($@"([{columnName}] NOT LIKE {quatationMark}%{columnValue}%{quatationMark})");
            }
            break;

        case GridKnownFunction.StartsWith:
            if (!string.IsNullOrEmpty(columnValue))
            {
                return($@"([{columnName}] LIKE {quatationMark}{columnValue}%{quatationMark})");
            }
            break;

        case GridKnownFunction.EndsWith:
            if (!string.IsNullOrEmpty(columnValue))
            {
                return($@"([{columnName}] LIKE {quatationMark}%{columnValue}{quatationMark})");
            }
            break;

        case GridKnownFunction.EqualTo:
            if (!string.IsNullOrEmpty(columnValue))
            {
                return($@"([{columnName}] = {quatationMark}{columnValue}{quatationMark})");
            }
            break;

        case GridKnownFunction.NotEqualTo:
            if (!string.IsNullOrEmpty(columnValue))
            {
                return($@"([{columnName}] <> {quatationMark}{columnValue}{quatationMark})");
            }
            break;

        case GridKnownFunction.GreaterThan:
            if (!string.IsNullOrEmpty(columnValue))
            {
                return($@"([{columnName}] > {quatationMark}{columnValue}{quatationMark})");
            }
            break;

        case GridKnownFunction.LessThan:
            if (!string.IsNullOrEmpty(columnValue))
            {
                return($@"([{columnName}] < {quatationMark}{columnValue}{quatationMark})");
            }
            break;

        case GridKnownFunction.GreaterThanOrEqualTo:
            if (!string.IsNullOrEmpty(columnValue))
            {
                return($@"([{columnName}] >= {quatationMark}{columnValue}{quatationMark})");
            }
            break;

        case GridKnownFunction.LessThanOrEqualTo:
            if (!string.IsNullOrEmpty(columnValue))
            {
                return($@"([{columnName}] <= {quatationMark}{columnValue}{quatationMark})");
            }
            break;

        case GridKnownFunction.Between:
            break;

        case GridKnownFunction.NotBetween:
            break;

        case GridKnownFunction.IsEmpty:
            return($@"([{columnName}] = {quatationMark}{quatationMark})");

        case GridKnownFunction.NotIsEmpty:
            return($@"([{columnName}] <> {quatationMark}{quatationMark})");

        case GridKnownFunction.IsNull:
            return($@"([{columnName}] IS NULL)");

        case GridKnownFunction.NotIsNull:
            return($@"(NOT ([{columnName}] IS NULL))");

        case GridKnownFunction.Custom:
            break;

        default:
            break;
        }

        return(string.Empty);
    }
Пример #13
0
        public static FilterFunction GetFilterFunction(GridKnownFunction function)
        {
            FilterFunction filterFunction;

            if (!FilterFunction.functionDictionary.ContainsKey(function))
            {
                switch (function)
                {
                case GridKnownFunction.NoFilter:
                    filterFunction = (FilterFunction) new NoFilterFunction();
                    break;

                case GridKnownFunction.Contains:
                    filterFunction = (FilterFunction) new ContainsFunction();
                    break;

                case GridKnownFunction.DoesNotContain:
                    filterFunction = (FilterFunction) new DoesNotContainFunction();
                    break;

                case GridKnownFunction.StartsWith:
                    filterFunction = (FilterFunction) new StartsWithFunction();
                    break;

                case GridKnownFunction.EndsWith:
                    filterFunction = (FilterFunction) new EndsWithFunction();
                    break;

                case GridKnownFunction.EqualTo:
                    filterFunction = (FilterFunction) new EqualToFunction();
                    break;

                case GridKnownFunction.NotEqualTo:
                    filterFunction = (FilterFunction) new NotEqualToFunction();
                    break;

                case GridKnownFunction.GreaterThan:
                    filterFunction = (FilterFunction) new GreaterThanFunction();
                    break;

                case GridKnownFunction.LessThan:
                    filterFunction = (FilterFunction) new LessThanFunction();
                    break;

                case GridKnownFunction.GreaterThanOrEqualTo:
                    filterFunction = (FilterFunction) new GreaterThanOrEqualToFunction();
                    break;

                case GridKnownFunction.LessThanOrEqualTo:
                    filterFunction = (FilterFunction) new LessThanOrEqualToFunction();
                    break;

                case GridKnownFunction.Between:
                    filterFunction = (FilterFunction) new BetweenFunction();
                    break;

                case GridKnownFunction.NotBetween:
                    filterFunction = (FilterFunction) new NotBetweenFunction();
                    break;

                case GridKnownFunction.IsEmpty:
                    filterFunction = (FilterFunction) new IsEmptyFunction();
                    break;

                case GridKnownFunction.NotIsEmpty:
                    filterFunction = (FilterFunction) new NotIsEmptyFunction();
                    break;

                case GridKnownFunction.IsNull:
                    filterFunction = (FilterFunction) new IsNullFunction();
                    break;

                case GridKnownFunction.NotIsNull:
                    filterFunction = (FilterFunction) new NotIsNullFunction();
                    break;

                default:
                    return((FilterFunction)null);
                }
                FilterFunction.functionDictionary.Add(function, filterFunction);
            }
            else
            {
                filterFunction = FilterFunction.functionDictionary[function];
            }
            return(filterFunction);
        }