首页 文章

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

提问于
浏览
2

我有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

    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();
    }
    

    现在它会起作用

  • 4

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

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

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

    然后是将网格的数据源分配给数据表 .

相关问题