Ejemplo n.º 1
0
        /// <summary>
        /// Applies the filters to the specified <see cref="SqlFilterBuilder&lt;EntityColumn&gt;"/> object.
        /// </summary>
        /// <param name="sql">The <see cref="SqlFilterBuilder&lt;EntityColumn&gt;"/> object.</param>
        /// <param name="control">The <see cref="System.Web.UI.Control"/> that the parameter is bound to.</param>
        /// <param name="filters">A collection of <see cref="ISqlFilter"/> objects.</param>
        /// <param name="isCallback">Indicates whether this is a callback request.</param>
        protected virtual void ApplyFilters(SqlFilterBuilder <EntityColumn> sql, Control control, IList filters, bool isCallback)
        {
            foreach (SqlFilter <EntityColumn> filter in filters)
            {
                String value = filter.GetFilterValue(control, isCallback);

                if (filter.ApplyFilter != null)
                {
                    SqlFilterEventArgs <EntityColumn> args = new SqlFilterEventArgs <EntityColumn>(sql, filter.Column, value);
                    filter.ApplyFilter(this, args);
                }
                else
                {
                    String format = "{0}";
                    if (filter.ComparisionType == SqlComparisonType.Contains)
                    {
                        format = "%{0}%";
                    }
                    else if (filter.ComparisionType == SqlComparisonType.StartsWith)
                    {
                        format = "{0}%";
                    }
                    else if (filter.ComparisionType == SqlComparisonType.EndsWith)
                    {
                        format = "%{0}";
                    }
                    if (filter.FilterType == SqlFilterType.Phrase)
                    {
                        format = string.Format("\"{0}\"", format);
                    }
                    sql.Append(filter.Column, string.Format(format, value));
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Applies the filters to the specified <see cref="SqlFilterBuilder&lt;EntityColumn&gt;"/> object.
        /// </summary>
        /// <param name="sql">The <see cref="SqlFilterBuilder&lt;EntityColumn&gt;"/> object.</param>
        /// <param name="control">The <see cref="System.Web.UI.Control"/> that the parameter is bound to.</param>
        /// <param name="filters">A collection of <see cref="ISqlFilter"/> objects.</param>
        /// <param name="isCallback">Indicates whether this is a callback request.</param>
        protected override void ApplyFilters(SqlFilterBuilder <EntityColumn> sql, Control control, IList filters, bool isCallback)
        {
            String value;

            object[] e;

            foreach (SqlExpressionBuilder <EntityColumn> filter in filters)
            {
                if (filter.ApplyFilter != null)
                {
                    value = filter.GetFilterValue(control, isCallback);
                    SqlFilterEventArgs <EntityColumn> args = new SqlFilterEventArgs <EntityColumn>(sql, filter.Column, value);
                    filter.ApplyFilter(this, args);
                }
                else
                {
                    switch (filter.BuilderExpression)
                    {
                    case StringBuilderExpression.AppendRange:
                        IOrderedDictionary prms = filter.Parameters.GetValues(HttpContext.Current, control);

                        if (filter.Junction == null)
                        {
                            e = new object[] { filter.Column, prms["From"], prms["To"] }
                        }
                        ;
                        else
                        {
                            e = new object[] { filter.Junction, filter.Column, prms["From"], prms["To"] }
                        };

                        if (prms["From"] == null && prms["To"] == null)
                        {
                            throw new ArgumentException("The AppendRange expression requires \"From\" and \"To\" parameters. ");
                        }
                        break;

                    case StringBuilderExpression.Append:
                        value = filter.GetFilterValue(control, isCallback);
                        if (filter.Junction == null)
                        {
                            e = new object[] { filter.Column, string.Format(filter.Format, value) }
                        }
                        ;
                        else
                        {
                            e = new object[] { filter.Junction, filter.Column, string.Format(filter.Format, value), true }
                        };
                        break;

                    case StringBuilderExpression.AppendIsNotNull:
                    case StringBuilderExpression.AppendIsNull:
                        if (filter.Junction == null)
                        {
                            e = new object[] { filter.Column }
                        }
                        ;
                        else
                        {
                            e = new object[] { filter.Junction, filter.Column }
                        };
                        break;

                    case StringBuilderExpression.AppendGreaterThan:
                    case StringBuilderExpression.AppendGreaterThanOrEqual:
                    case StringBuilderExpression.AppendLessThan:
                    case StringBuilderExpression.AppendLessThanOrEqual:
                    case StringBuilderExpression.AppendEquals:
                    case StringBuilderExpression.AppendNotEquals:
                    case StringBuilderExpression.AppendIn:
                    case StringBuilderExpression.AppendInQuery:
                    case StringBuilderExpression.AppendNotInQuery:
                        value = filter.GetFilterValue(control, isCallback);
                        if (filter.Junction == null)
                        {
                            e = new object[] { filter.Column, string.Format(filter.Format, value) }
                        }
                        ;
                        else
                        {
                            e = new object[] { filter.Junction, filter.Column, string.Format(filter.Format, value) }
                        };
                        break;

                    default:
                        value = filter.GetFilterValue(control, isCallback);
                        if (filter.Junction == null)
                        {
                            e = new object[] { filter.Column, string.Format(filter.Format, value) }
                        }
                        ;
                        else
                        {
                            e = new object[] { filter.Junction, filter.Column, string.Format(filter.Format, value) }
                        };
                        break;
                    }

                    if (filter.GroupState == ExpressionGroupState.Begin)
                    {
                        EntityUtil.InvokeMethod(sql, "BeginGroup", new object[] { "" });
                        EntityUtil.InvokeMethod(sql, filter.BuilderExpression.ToString(), e);
                    }
                    else if (filter.GroupState == ExpressionGroupState.AndBegin)
                    {
                        EntityUtil.InvokeMethod(sql, "BeginGroup", new object[] { "AND" });
                        EntityUtil.InvokeMethod(sql, filter.BuilderExpression.ToString(), e);
                    }
                    else if (filter.GroupState == ExpressionGroupState.OrBegin)
                    {
                        EntityUtil.InvokeMethod(sql, "BeginGroup", new object[] { "OR" });
                        EntityUtil.InvokeMethod(sql, filter.BuilderExpression.ToString(), e);
                    }
                    else if (filter.GroupState == ExpressionGroupState.End)
                    {
                        EntityUtil.InvokeMethod(sql, filter.BuilderExpression.ToString(), e);
                        EntityUtil.InvokeMethod(sql, "EndGroup");
                    }
                    else
                    {
                        EntityUtil.InvokeMethod(sql, filter.BuilderExpression.ToString(), e);
                    }
                }
            }
        }
    }