public static string GetCustomFunctionOperatorValue(CriteriaOperator theOperator, string fieldName) { var myFunctionOperator = new CriteriaVisitor(fieldName, CustomVisitMode.LookingOnlyForCustomOperator).AcceptOperator(theOperator) as FunctionOperator; if (!IsNull(myFunctionOperator)) { return(((ConstantValue)myFunctionOperator.Operands[1]).Value.ToString()); } return(null); }
protected override CriteriaOperator VisitFunction(FunctionOperator theOperator) { if (theOperator.OperatorType == FunctionOperatorType.StartsWith || theOperator.OperatorType == FunctionOperatorType.EndsWith || theOperator.OperatorType == FunctionOperatorType.Contains) { return(new FunctionOperator(theOperator.OperatorType, CriteriaVisitor.WrapIntoCustomFunction(theOperator.Operands[0]), CriteriaVisitor.WrapIntoCustomFunction(theOperator.Operands[1]))); } return(base.VisitFunction(theOperator)); }
protected void Grid_AutoFilterCellEditorInitialize(object sender, ASPxGridViewEditorEventArgs e) { var grid = (ASPxGridView)sender; if (e.Column.FieldName == SpecialFilterColumnFieldName) { InitializeFilterCombobox((ASPxComboBox)e.Editor); var gridCriteria = CriteriaOperator.Parse(grid.FilterExpression); e.Editor.Value = CriteriaVisitor.GetCustomFunctionOperatorValue(gridCriteria, e.Column.FieldName); } }
protected string UpdateGridFilterExpression(ASPxGridView grid, ASPxGridViewAutoFilterEventArgs e) { var gridCriteria = CriteriaOperator.Parse(grid.FilterExpression); gridCriteria = CriteriaVisitor.RemoveCustomFunction(gridCriteria, e.Column.FieldName); var customCriteria = new FunctionOperator(FunctionOperatorType.Custom, MyCustomFunctionOperator.Name, e.Value, new OperandProperty(e.Column.FieldName), new OperandProperty(OtherFilterColumnFieldName)); if (ReferenceEquals(gridCriteria, null) && ReferenceEquals(customCriteria, null)) { return(string.Empty); } return(GroupOperator.And(gridCriteria, customCriteria).ToString()); }
protected void Grid_SubstituteFilter(object sender, DevExpress.Data.SubstituteFilterEventArgs e) { e.Filter = CriteriaVisitor.Substitute(e.Filter); }