如何以编程方式在DataTable上使用Telerik RadGrid FilterExpression

时间:2011-11-17 10:06:46

标签: c# asp.net .net-3.5 telerik

我有2页1与Telerik RadGrid另一个与Telerik RadChart thay使用相同的DataTable。当我在页面上过滤RadGrid时,我想按下按钮并让RadChart更新以使用相同的过滤后的DataTable。

首先,这就是我已经尝试过的。

关闭LINQ表达式(EnableLinqExpressions="false"),我可以设置RadGrid过滤器表达式(例如),如下所示:

Grid.MasterTableView.FilterExpression = "([Date] LIKE '%21%')"

现在我可以使用:

private void SetFiltring(ref DataTable table)
{
    table = table.Select("([Date] LIKE '%21%')", "").CopyToDataTable();
}

它的工作很棒。

现在,如果我想使用LINQ表达式(EnableLinqExpressions="true") 我可以设置RadGrid过滤器表达式(例如),如下所示:

Grid.MasterTableView.FilterExpression = "it["Date"].ToString().ToUpper().Contains("21".ToUpper()))"

现在我不知道如何在DataTable上使用这个FilterExpression。如何在DataTable上使用这个FilterExpression.And Linq会比MSSQL Server语法更快吗?

2 个答案:

答案 0 :(得分:4)

problam在.NET Framework 3.5 SP1中。使用动态表达式我必须使用 using System.Linq;using System.Linq.Dynamic; 而且我可以使用Linq:

private void SetFiltring(ref DataTable table)
{
    table = table.AsEnumerable()
                 .AsQueryable()
                 .Where("it["Date"].ToString().ToUpper().Contains("21".ToUpper()))")
                 .CopyToDataTable();
}

现在它将起作用

答案 1 :(得分:0)

如果您想以与上述过滤器相同的方式执行此操作,请查看此博文:

http://blogs.msdn.com/b/aconrad/archive/2007/09/07/science-project.aspx

在其中,他提供了一个代码库来使用linq表达式,然后使用一种方法将其转换为数据表。

然后,将网格的数据源分配给数据表。