RadGrid Custom Filter
        Posted  
        
            by Aaron
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Aaron
        
        
        
        Published on 2010-03-05T16:18:15Z
        Indexed on 
            2010/04/08
            1:33 UTC
        
        
        Read the original article
        Hit count: 1454
        
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
© Stack Overflow or respective owner