Как перехватить фильтр в RadGrid или ASPxGridView для ASP.Net? - PullRequest
0 голосов
/ 18 ноября 2011

Мне нужна помощь в выборе между Telerik RadGrid и DevExpress ASPxGridView для Asp.Net на основе уникальных требований к фильтрации.Данные хранятся в денормализованных файлах Vax.Весь доступ к данным осуществляется через хранимые процедуры Sql Server, вызывающие запросы ODBC Connx к плоским файлам.Параметры хранимой процедуры используются для фильтрации данных.Без какого-либо фильтра возвращаются тысячи записей.

Я успешно отобразил все записи на двух тестовых страницах ASP.net, одна с DevExpress ASPxGridVIew, а другая с Telerik RadGrid.В коде я привязываю каждую сетку к хранимой процедуре, которая возвращает более 26 000 строк.Sproc вызывается через импорт функции Entity Framework, который заполняет IEnumerable<Customer>, который становится источником данных каждой соответствующей сетки.Я могу использовать функции фильтра обеих сеток, и они, кажется, работают хорошо.

Моя проблема в том, что до применения фильтра сетки все тысячи строк возвращаются из хранимой процедуры.Я хотел бы перехватить параметры фильтра сетки и применить их к параметрам моей хранимой процедуры.Таким образом, будет доступно гораздо меньше записей.

Можно ли это сделать с помощью сторонней сетки, и если да, то как?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

Кажется, это может быть достигнуто с помощью RadFilter для RadGrid.Один пример здесь.

Но в целом, похоже, вам нужно добавить обработчик в ItemCommand и выполнить соответствующий фильтр, например, на основе CommandName.Затем вы можете просто перепривязать данные.

0 голосов
/ 18 января 2012

Rad Filter также позволит вам использовать его, не привязываясь напрямую к другому элементу управления или источнику данных.Фильтр имеет возможность извлекать выражение фильтра во многих различных формах (одним из них является поставщик linq).Затем вы можете применить это выражение к вашему источнику данных.Мы делаем что-то подобное.У нас есть страница, на которой мы динамически создаем фильтр rad с типами полей и опциями фильтра.Затем пользователь использует интерфейс фильтра rad для создания фильтра на основе требуемых полей, затем мы извлекаем выражение фильтра, которое можно применить к таблице данных, которая создается на странице, на которой отображаются данные.

Воткод для извлечения выражения фильтра из фильтра:

var provider = new RadFilterSqlQueryProvider();
provider.ProcessGroup(myRadFilter.RootGroup);

var sqlFilterExpression = provider.Result;
...