我在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 ?????
提前致谢
答案 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();
}
}