Вопрос

Я пытаюсь добавить собственный фильтр в свой RadGrid.У меня есть столбец vendNum, который я хочу разрешить пользователям фильтровать по нескольким VendNums с помощью списка, разделенного запятыми.По сути, мне нужна та же функциональность, что и у оператора «in» в SQL (где vendNum in (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;
                }
            }
        }

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

Спасибо,

Аарон

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

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

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top