我正在尝试将自定义筛选器添加到我的radgrid中。我有一个名为vendnum的列,我希望允许用户使用逗号分隔的列表筛选多个vendnum。基本上,我想要与sql中的“in”语句(其中vendnum in(x,y,z))相同的功能。
我按照教程学习
this site
在我的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()
语句。以前有人处理过吗?任何帮助都非常感谢。
谢谢,
亚伦
忘记编辑此
几个星期前我解决了这个问题……我不得不在radgrid下将“enableLinqExpressions”属性设置为false。