PagedList分页

时间:2014-12-22 10:09:54

标签: asp.net-mvc asp.net-mvc-4 pagedlist

我在MVC中使用PagedList。一切正常,但场景就是这样。

从存储过程中加载数据。

因此,当搜索条件满足SP返回200个记录时,分页就像预期的那样工作并且PageS 2 20 ..(实际需要的场景)和PageSize 20。

但是当需求发生变化时

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

但是我们知道实际上200个记录的分页应该是失败的。因此,分页仅为20条记录创建,而不是实际数字,即200条记录。

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

提前致谢

2 个答案:

答案 0 :(得分:3)

是的 StaticPagedList 可达到目的。

所需的更改很少:

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

此处TOTALCOUNT为200。

返回视图时,请务必返回 usersAsIPagedList ,而不是 usersAsIPagedList.ToPagedList

return PartialView("_PARTIALVIEW", usersAsIPagedList);

答案 1 :(得分:1)

您必须使用手动分页StaticPagedList,您必须修改SP以返回记录总数以及结果

这是一个引自&#34; PagedList项目&#34;网站:

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();
    }
}