数据表服务器端分页总是显示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个页面。但事实并非如此。

数据表服务器端分页总是显示1页

我认为这是导致它始终是一页的行:

paginationModel.recordsFiltered = getPointUsers.Count();

你说"getPointUsers.Count()"是"5"。因此recordsFiltered数据项是应用了当前搜索筛选器的可用记录的总数。所以,如果你的页面大小是5,你的recordsFiltered是5,那么DataTable认为只有一个页面可用来显示当前的过滤器。我不相信"recordsTotal"用于分页计算,除非"recordsFiltered"不存在。

从你的代码,它看起来不像你正在应用任何过滤器,所以错误可能是在你如何计算"totalCount",因为"recordsFiltered"值是基于多少数据项返回。如果你不打算在数据表上应用任何搜索过滤器,那么你可以使用"getPointUsers.Count()"为"recordsTotal"answers"recordsFiltered",因为它们不应该是不同的。