예제 #1
0
    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);
    }
예제 #2
0
 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());
    }
예제 #5
0
 protected void Grid_SubstituteFilter(object sender, DevExpress.Data.SubstituteFilterEventArgs e)
 {
     e.Filter = CriteriaVisitor.Substitute(e.Filter);
 }