Пользовательский фильтр RadGrid

Я пытаюсь добавить собственный фильтр в свой RadGrid. У меня есть столбец vendNum, который я хочу разрешить пользователям фильтровать по нескольким vendNum с помощью списка, разделенного запятыми. По сути, мне нужна та же функциональность, что и в операторе in в SQL (где vendNum в (X, Y, Z)).

Я следовал руководству на этом сайте и придумал следующий код. для размещения в моем событии RadGrid1_ItemCommand.

 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;
                }
            }
        }

Тем не менее, это продолжает давать мне ошибку Expression Expected, когда я пытаюсь отфильтровать список, разделенный запятыми. Я все еще могу отфильтровать один vendNum. Мой FilterExpression выходит, как и ожидалось. Код не работает в операторе RadGrid1.Rebind(). Кто-нибудь имел дело с этим раньше? Любая помощь приветствуется.

Спасибо,

Аарон

Забыли это отредактировать

Я решил эту проблему несколько недель назад... Мне пришлось установить для свойства EnableLinqExpressions значение false в RadGrid.


person Aaron    schedule 05.03.2010    source источник


Ответы (1)


Я видел это как исправление для этого вопроса где-то.

Попробуйте добавить: RadGrid1.EnableLinqExpressions = false;

person Chris    schedule 08.04.2010
comment
Да, именно это я и должен был сделать. - person Aaron; 08.04.2010