Пользовательский фильтр RadGrid
Вопрос
Я пытаюсь добавить собственный фильтр в свой 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 = ложь;