我尝试实施服务器端分页,使用jquery
datatable
进行过滤。
但它始终只在页脚创建一个页面。
public JsonResult UserList(int draw, int length, int start)
{
PaginattionModel<PointUserModel> paginationModel = new PaginattionModel<PointUserModel>()
{
draw = draw
};
int sortColumn = -1;
string sortDirection = "asc";
if (Request.Form["order[0][column]"] != null)
{
sortColumn = int.Parse(Request.Form["order[0][column]"]);
}
if (Request.Form["order[0][dir]"] != null)
{
sortDirection = Request.Form["order[0][dir]"];
}
int totalCount = 0;
PointUserFilter pointUserFilter = new PointUserFilter()
{
PageSize = length,
PageNumber = start,
SortDirection = sortDirection,
SortColumnNo = sortColumn
};
var getPointUsers = pointUserBl.GetPointUsers(pointUserFilter, out totalCount);
paginationModel.data = getPointUsers;
paginationModel.recordsFiltered = getPointUsers.Count();
paginationModel.recordsTotal = totalCount;
return Json(paginationModel, JsonRequestBehavior.AllowGet);
}
这些是值:
draw = 1,getPointUsers.Count()= 5,totalCount = 6
我每页显示5条记录。所以它应该创建2页。但事实并非如此。
答案 0 :(得分:0)
我相信这就是导致它总是一页的界限:
paginationModel.recordsFiltered = getPointUsers.Count();
你说&#34; getPointUsers.Count()&#34;是&#34; 5&#34;。因此,recordsFiltered数据项是应用当前搜索过滤器时可用的记录总数。因此,如果您的页面大小为5且您的recordsFiltered为5,那么DataTable认为只有一个页面可用于显示当前过滤器。我不相信&#34; recordsTotal&#34;用于分页计算,除非&#34; recordsFiltered&#34;不在场。
从您的代码中看,您似乎没有应用任何过滤器,因此错误可能在于您计算&#34; totalCount&#34;因为&#34; recordsFiltered&#34; value取决于返回的数据项数。如果您不打算在DataTable上应用任何搜索过滤器,那么您可以使用&#34; getPointUsers.Count()&#34; for&#34; recordsTotal&#34;和&#34; recordsFiltered&#34;因为他们永远不应该是不同的。