数据服务器端分页始终显示1页

时间:2016-11-09 16:21:33

标签: c# jquery asp.net-mvc datatables

我尝试实施服务器端分页,使用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页。但事实并非如此。

1 个答案:

答案 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;因为他们永远不应该是不同的。