我有一个radgrid,当我过滤时,我会得到类似的东西:
"(iif(Name== null, \"\", Name).ToString().ToUpper().Contains(\"ap\".ToUpper()))"
在我的Linq数据源选择事件中,我想在结果中使用此过滤器,例如results = results.Where(FilterExression),但这不起作用。
答案 0 :(得分:2)
以下是我用过的内容:
var filterExpression = gridOrderLineItems.MasterTableView.FilterExpression;
if (!string.IsNullOrEmpty(filterExpression))
allItems = allItems.AsQueryable()
.Where(filterExpression)
.ToList();
从Telerik文档中可以看出,RadGrid中有两种过滤模式。一个是Lynq Dynamic,另一个是SQL。我认为默认是动态的,前提是您的数据源支持它。我有一个网格使用SQL语法的情况,因为数据源是IEnumerable,我不得不将其更改为List以启用动态表达。只需选中FilterExpression属性,即可查看网格所处的模式。您也可以使用EnableLinqExpressions属性。
答案 1 :(得分:0)
我想你想要的东西 results.Where(I =>(i.Name + “”。)的ToString()ToUpper的()包含( “AP” .ToUpper())))
答案 2 :(得分:0)
我的解决方案
var z = RadGrid2.MasterTableView.FilterExpression;
string filter = "";
if (z.Split('\"').Length > 3)
{
string v = "'" + z.Split('\"')[3] + "'";
string c = z.Split('\"')[0];
string opr = " like ";
c = c.Replace("(iif(", "").Replace(" ", "").Replace("==", "").Replace("null", "").Replace(",", "");
filter = c + opr + v ;
}
else
filter = z;
e.InputParameters["filterExpression"] = filter;