RadGrid Custom Filter

11,207

I saw this as a fix for this question somewhere.

Try adding: RadGrid1.EnableLinqExpressions = false;

Share:
11,207
Aaron
Author by

Aaron

I'm a software developer for an independent grocer. I develop using C# in both Windows Applications and Web Applications. I also develop using pure ASP.

Updated on June 30, 2022

Comments

  • Aaron
    Aaron almost 2 years

    I'm trying to add a custom filter to my RadGrid. I have a column, vendNum, which I want to allow users to filter on multiple vendNums with a comma-separated list. Basically, I want the same functionality as an "in" statement in SQL (where vendNum in (X,Y,Z)).

    I followed the tutorial on this site and came up with the following code to place in my RadGrid1_ItemCommand event.

     protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e)
            {
                if (e.CommandName == RadGrid.FilterCommandName)
                {
                    Pair filterPair = (Pair)e.CommandArgument;
        
                    switch (filterPair.Second.ToString())
                    {               
                        case "vendNum":
                            TextBox tbPattern = (e.Item as GridFilteringItem)["vendNum"].Controls[0] as TextBox;
                            if (tbPattern.Text.Contains(","))
                            {
                                string[] values = tbPattern.Text.Split(',');
                                if (values.Length >= 2)
                                {
                                    e.Canceled = true;
                                    StringBuilder newFilter = new StringBuilder();
                                    for (int i = 0; i < values.Length; i++)
                                    {
                                        if (i == values.Length - 1)
                                            newFilter.Append("[vendNum] = " + values[i]);
                                        else
                                            newFilter.Append("[vendNum] = " + values[i] + " OR ");
                                    }
                                    if (RadGrid1.MasterTableView.FilterExpression == "")
                                        RadGrid1.MasterTableView.FilterExpression = newFilter.ToString();
                                    else
                                        RadGrid1.MasterTableView.FilterExpression = "((" + RadGrid1.MasterTableView.FilterExpression + ") AND (" + newFilter.ToString() + "))";
                                    RadGrid1.Rebind();
                                }
                            }
                            break;
                        default:
                            break;
                    }
                }
            }
    

    Doing this, though, keeps giving me an error "Expression Expected" when I try to filter with a comma separated list. I'm still able to filter a single vendNum. My FilterExpression does come out as expected. The code is failing on the RadGrid1.Rebind() statement. Has anyone dealt with this before? Any help is greatly appreciated.

    Thanks,

    Aaron

    Forgot to Edit This

    I solved this problem weeks ago...I had to set the "EnableLinqExpressions" property to false under the RadGrid.

  • Aaron
    Aaron about 14 years
    Yes, that's exactly what I had to do.