PagedList分页(PagedList Pagination)

2019-10-21 11:44发布

我使用的MVC PagedList。 一切工作正常,但情况是这样的。

从存储过程加载数据。

因此,当一个检索条件满足SP返回200条记录,分页是这样1 2 3 4 ..(实际想情形),这是按预期工作和每页20。

但是,当需求变化

当第1次点击获取20条,第2页获得20条等(从数据库每次点击)..所以初始加载SP将只返回20条记录,而不是实际的(200条)只有一个分页第1页出现

但我们知道实际的200条分页应该是第1页第2页第3失败。 所以分页时只有20条记录,而不是实际数量,即200创建。

是的解决办法是SP收益作为总输出200条记录,所以我知道一共有多少条记录,但如何覆盖Html.PagedListPager显示1 2 3 ?????

提前致谢

Answer 1:

是的StaticPagedList服务的目的。

需要一些改动如下:

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

这里是TOTALCOUNT 200为您的例子。

虽然返回视图确保返回usersAsIPagedList而不是usersAsIPagedList.ToPagedList

return PartialView("_PARTIALVIEW", usersAsIPagedList);


Answer 2:

您必须使用手动分页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();
    }
}


文章来源: PagedList Pagination