jqgrid 中的页面计数与服务器端分页

问题描述 投票:0回答:2

我正在为 JQGrid 实现服务器端分页(使用 MVC4)。我能弄清楚。我没有使用 JQGrid 的寻呼机选项。相反,我使用自定义寻呼机实现。为此,我需要获取服务器返回的总页数。

我尝试过以下方法:

grid.getGridParam('lastpage')  -- always returns 1, which makes sense as I am returning only one page contents to the grid
grid.getGridParam('total')  -- I tried this because I was setting this value in the controller, but it is returning null
grid.getGridParam('records') -- always returns 10, my page size.
jquery asp.net-mvc-4 pagination jqgrid
2个回答
2
投票

我想您使用

loadonce: true
选项的方式是错误的。该选项的目标是客户端分页、排序和过滤/搜索。如果使用
loadonce: true
选项,服务器必须返回 所有行。如果使用
loadonce: true
选项,
total
records
page
的值将被忽略,并且将根据 从服务器返回的项目总数 设置相应的值。因为您只返回了 10 个项目(第一页的项目),所以参数的值与您在问题中描述的完全一样。顺便说一句,如果您没有那么大的数据集(例如 1-10,000 行),我建议您使用
loadonce: true
选项。在这种情况下,服务器应返回按请求参数(sidx
sord
)排序的
all
项目。人们可以只从服务器返回所有排序项目的数组,而不需要任何附加信息。

顺便说一下jqGrid的页面相关参数含义如下:

  • page - 当前页面从 1 开始的编号
  • lastpage - 最后一页的页码
  • rowNum - 页面大小 - 页面中的最大记录数(最后一页可以包含更少的记录)
  • 记录 - 网格中的总记录(所有页面)
  • reccount - 页面中显示的记录总数(小于或等于页面 大小行数)

0
投票

如果您使用

dataType : "json"
,那么您需要在 jqGrid 的
jsonReader
属性中设置这些值,

 $("#gridid").jqGrid({
    ...
       jsonReader : { 
          root: "rows", 
          page: "page", 
          total: "total", 
          records: "records", 
          repeatitems: true, 
          cell: "cell", 
          id: "id",
          userdata: "userdata",
          subgrid: { 
             root:"rows", 
             repeatitems: true, 
             cell:"cell" 
          } 
       },
    ...
    });

最终是发送到服务器以获取数据的值。因此,如果您必须覆盖这些值,则需要更改这些值。

因此,请确保您在服务器端使用相同的值来获取这些值。

© www.soinside.com 2019 - 2024. All rights reserved.