ASP.NET 4 GridView使用QueryExtender过滤多个字符串

时间:2011-11-13 18:43:20

标签: asp.net gridview filtering

我有一个带有EntityDataSource的GridView。

我希望使用QueryExtender在运行时过滤行,方法是将它与多个字符串进行比较。

即,仅返回某个字段为IN的行('string1','string2',string3')

有人能指出我的答案吗?感谢。

编辑:我已经知道如何为一个字符串执行此操作,在运行时从控件读取。但我无法在谷歌上找到任何可以证明我想要实现的目标。

1 个答案:

答案 0 :(得分:0)

拥有Enumerable<T>,你可以定义一个List<string>,其中包含你要查找的字符串列表,然后写出如下内容:

List<string> search = new List<string>();
            search.Add("string 1");
            search.Add("string 2");

            var query = from ex in YourEntities
                    where search.Contains(ex.Field)
                select ex;

query将包含您要查找的内容。

<强>更新

我不熟悉QueryExtender控件,但this MSDN教程建议您执行以下操作:

在QueryExtender控件的开始和结束标记之间添加CustomExpressionFilter:

<asp:CustomExpression OnQuerying="FilterByStrings"></asp:CustomExpression>

然后在你的代码中定义这样的方法:

protected void FilterByStrings(object sender, CustomExpressionEventArgs e)
{
     List<string> search = new List<string>();
                search.Add("string 1");
                search.Add("string 2");

     e.Query = from ex in e.Query.Cast<YourEntity>()
               where search.Contains(ex.Field)
               select ex;
}