Разбиение на страницы

Я использую PagedList в MVC. Все работает нормально, но сценарий выглядит так.

Загрузка данных из хранимой процедуры.

Поэтому, когда условие поиска удовлетворяет SP, возвращается 200 Records , нумерация страниц идет как Page 1 2 3 4 .. (фактический требуемый сценарий), который работает, как ожидалось, и PageSize 20.

Но когда требования меняются

Когда страница 1 щелкает, получает 20 записей, страница 2 получает 20 записей и т. д. (каждый щелчок из базы данных). Таким образом, при начальной загрузке SP будет возвращать только 20 записей, а не фактические (200 записей), только одна разбивка на страницы Появляется страница 1

Но мы знаем, что фактическое разбиение на страницы 200 записей должно быть неудачным. Таким образом, разбивка на страницы создается только для 20 записей, а не для фактического числа, т.е. 200.

Да, обходной путь заключается в том, что SP возвращает в качестве вывода всего 200 записей, поэтому я знаю, сколько всего записей, но как перезаписать Html.PagedListPager, чтобы показать Page 1 2 3 ?????

заранее спасибо


person user2463553    schedule 22.12.2014    source источник


Ответы (2)


Да, StaticPagedList подходит для этих целей.

Требуется несколько изменений:

var usersAsIPagedList = new StaticPagedList<CLASSNAME>(LIST, PAGEINDEX, PAGESIZE, TOTALCOUNT);

здесь TOTALCOUNT для вашего примера равно 200.

При возврате представления обязательно возвращайте usersAsIPagedList, а не как usersAsIPagedList.ToPagedList.

return PartialView("_PARTIALVIEW", usersAsIPagedList);
person Vinod    schedule 23.12.2014

Вы должны использовать ручное разбиение по страницам StaticPagedList, вам нужно изменить SP, чтобы вернуть общее количество записей вместе с результатами.

Это пример, приведенный на веб-сайте «Проект PagedList»:

public class UserController : Controller
{
    public object Index(int? page)
    {
        var pageIndex = (page ?? 1) - 1; //MembershipProvider expects a 0 for the first page
        var pageSize = 10;
        int totalUserCount; // will be set by call to GetAllUsers due to _out_ paramter :-|

        var users = Membership.GetAllUsers(pageIndex, pageSize, out totalUserCount);
        var usersAsIPagedList = new StaticPagedList<MembershipUser>(users, pageIndex + 1, pageSize, totalUserCount);

        ViewBag.OnePageOfUsers = usersAsIPagedList;
        return View();
    }
}
person Ala' Alnajjar    schedule 22.12.2014