Фильтр ASP.NET 4 GridView для нескольких строк с использованием QueryExtender - PullRequest
0 голосов
/ 13 ноября 2011

У меня есть GridView с EntityDataSource.

Я хочу отфильтровать строки во время выполнения, используя QueryExtender, сравнив его с несколькими строками.

т.е. возвращать только те строки, в которых определенное поле является IN ('string1', 'string2', string3 ')

Может ли кто-нибудь указать мне на ответ? Спасибо.

Редактировать: я уже знаю, как сделать это для одной строки, прочитанной из элемента управления во время выполнения. Но я не могу найти в Google ничего, что демонстрирует то, чего я пытаюсь достичь.

1 Ответ

0 голосов
/ 13 ноября 2011

Имея 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 будет иметь предметы, которые вы ищете.

UPDATE

Я не знаком с элементом управления QueryExtender, но это руководство MSDN предлагает вам выполнить следующее:

Добавьте CustomExpressionFilter между открывающим и закрывающим тегами элемента управления QueryExtender:

<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;
}
...