/// <summary> /// Applies the filters to the specified <see cref="SqlFilterBuilder<EntityColumn>"/> object. /// </summary> /// <param name="sql">The <see cref="SqlFilterBuilder<EntityColumn>"/> 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)); } } }
/// <summary> /// Applies the filters to the specified <see cref="SqlFilterBuilder<EntityColumn>"/> object. /// </summary> /// <param name="sql">The <see cref="SqlFilterBuilder<EntityColumn>"/> 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); } } } } }