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

时间:2014-07-27 04:40:28

标签: jquery asp.net-mvc-4 jqgrid paging

我正在为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.

2 个答案:

答案 0 :(得分:2)

我认为您以错误的方式使用loadonce: true选项。该选项的目标是客户端分页,排序和过滤/搜索。如果使用loadonce: true选项,服务器必须返回所有行。如果使用loadonce: true选项,则会忽略值totalrecordspage,并根据返回的项目总数设置相应的值服务器。因为您只返回了10个项目(第一页的项目),所以参数的值与您在问题中描述的完全相同。顺便提一下,如果您没有这么大的数据集(例如1-10万行),我会建议您使用loadonce: true选项。服务器应返回按所请求参数(sidxsord)排序的所有项。可以从服务器返回所有已排序项的数组,而无需任何其他信息。

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

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

答案 1 :(得分: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" 
          } 
       },
    ...
    });

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

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