【问题标题】:PagedList Pagination分页列表分页
【发布时间】:2015-02-20 10:10:45
【问题描述】:

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

从存储过程加载数据。

因此,当搜索条件满足 SP 返回 200 条记录时,分页就像 Page 1 2 3 4 ..(实际想要的场景),它按预期工作并且 PageSize 20。

但是当需求发生变化时

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

但是我们知道实际的 200 条记录分页应该是 Page 1 Page 2 Page 3 它失败了。因此,仅为 20 条记录而不是实际数字(即 200)创建分页。

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

提前致谢

【问题讨论】:

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


    【解决方案1】:

    是的 StaticPagedList 服务于目的。

    需要的改动很少:

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

    这里的 TOTALCOUNT 是 200,例如您的示例。

    返回视图时,请确保返回 usersAsIPagedList 而不是 usersAsIPagedList.ToPagedList

    return PartialView("_PARTIALVIEW", usersAsIPagedList);
    

    【讨论】:

      【解决方案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();
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-29
        • 1970-01-01
        • 1970-01-01
        • 2016-06-03
        • 2011-07-30
        相关资源
        最近更新 更多