Пейджинг на стороне сервера с сеткой MVCContrib

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

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

Есть ли способ заставить MVCContrib работать с пейджингом на стороне сервера?

2 ответа

Решение

Вам нужно будет реализовать интерфейс IPagination самостоятельно, добавить параметр страницы в метод действия, а затем передать его в хранимую процедуру, чтобы получить соответствующую коллекцию элементов. Затем заполните все свойства IPagination из этого и свои знания о том, как работает ваша хранимая процедура.

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

"Количество доступных страниц определяется количеством уже имеющихся предметов в коллекции, или мне так кажется".

Возможно, вы смотрите на образцы, которые используют аромат LINQ. Это не обязательно означает, что вся коллекция находится в памяти. Кроме того, даже если они находятся в памяти, я все равно назвал бы эту подкачку на стороне сервера. Для меня подкачка на стороне клиента в веб-приложении означает javascript.

PS: это может помочь вам начать работу, хотя, судя по звукам, вам нужно будет игнорировать его биты Entity Framework:

http://weblogs.asp.net/rajbk/archive/2010/05/08/asp-net-mvc-paging-sorting-filtering-using-the-mvccontrib-grid-and-pager.aspx

Там, где они используют расширение "AsPagination()", вам необходимо вызвать вашу хранимую процедуру и заполнить собственную реализацию IPagination.

Есть класс под названием CustomPagination в MVCContrib. Конструктор принимает следующие аргументы

(Enumerable<T> dataSource, int pageNumber, int pageSize, int totalItems)

Затем вы передаете это в Grid и Pager.

Другие вопросы по тегам