我有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语法更快吗?
答案 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表达式,然后使用一种方法将其转换为数据表。
然后,将网格的数据源分配给数据表。