Комплексный метод интерфейса уровня обслуживания сортировки / разбиения на страницы / фильтрации - PullRequest
3 голосов
/ 28 марта 2011

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

Хранилище возвращает IQueryable<T>.

Я придумал такую ​​модель:

public class PagedModel<T>
{
    public GridSortOptions GridSortOptions { get; set; } //Enum for ASC and DESC
    public IList<T> Items { get; set; }
    public int Page { get; set; }
    public int PageSize { get; set; }
}

Метод:

PagedModel<User> GetUsers(Expression<Func<T,bool>> predicate, int page, int pageSize, GridSortOptions sortOption);

Вопросы:

  1. Какие параметры мне не хватает в этом методе?
  2. Какие свойства мне не хватает в PagedModel?
  3. Как мне реализовать метод?

Что я хочу:

  1. Paging
  2. Сортировка
  3. Фильтрация

Ответы [ 2 ]

1 голос
/ 28 марта 2011

Иногда мне приятно создать класс «Критерии», который содержит все свойства, отдельные от списка элементов, которые вы ищете.Таким образом, вы можете использовать его как свойство модели, которое будет автоматически связано с вашими поисковыми действиями, передавать его в методы сервиса и хранилища (вместо набора отдельных параметров), сохранять его в сеансе при необходимости, иметь строго типизированные свойства фильтраспецифичные для текущего типа, который вы ищете (т.е. пользователя), имеют супертип для хранения общего подкачки или сортировки.

что-то вроде

public class UserCriteria
{
    public GridSortOptions GridSortOptions { get; set; } //Enum for ASC and DESC
    public int Page { get; set; }
    public int PageSize { get; set; }
    public bool? IsActive { get; set; }
    public string UserName { get; set; }
}
0 голосов
/ 28 марта 2011

Я только что использовал компоненты Telerik MVC, они с открытым исходным кодом и бесплатны.Самое приятное, что я только что обнаружил, это то, что если вы используете IQueryable<T> в качестве источника данных, он автоматически предоставит вам ... разбиение по страницам, сортировку, фильтрацию и группирование (конечно, есть некоторые биты, которые я пропустил) прямо изкоробка!

Возможно, стоит посмотреть на них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...