数据表服务器端分页总是显示1页
本文关键字:显示 1页 服务器端 分页 数据表 | 更新日期: 2023-09-27 18:17:19
我正在尝试实现服务器端分页,过滤器与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);
}
这些值:
= 1, getPointUsers.Count () = 5, totalCount = 6
我每页显示5条记录。所以它应该创建2个页面。但事实并非如此。
我认为这是导致它始终是一页的行:
paginationModel.recordsFiltered = getPointUsers.Count();
你说"getPointUsers.Count()"是"5"。因此recordsFiltered数据项是应用了当前搜索筛选器的可用记录的总数。所以,如果你的页面大小是5,你的recordsFiltered是5,那么DataTable认为只有一个页面可用来显示当前的过滤器。我不相信"recordsTotal"用于分页计算,除非"recordsFiltered"不存在。
从你的代码,它看起来不像你正在应用任何过滤器,所以错误可能是在你如何计算"totalCount",因为"recordsFiltered"值是基于多少数据项返回。如果你不打算在数据表上应用任何搜索过滤器,那么你可以使用"getPointUsers.Count()"为"recordsTotal"answers"recordsFiltered",因为它们不应该是不同的。