我正在为 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.
我想您使用
loadonce: true
选项的方式是错误的。该选项的目标是客户端分页、排序和过滤/搜索。如果使用 loadonce: true
选项,服务器必须返回 所有行。如果使用 loadonce: true
选项,total
、records
和 page
的值将被忽略,并且将根据 从服务器返回的项目总数 设置相应的值。因为您只返回了 10 个项目(第一页的项目),所以参数的值与您在问题中描述的完全一样。顺便说一句,如果您没有那么大的数据集(例如 1-10,000 行),我建议您使用 loadonce: true
选项。在这种情况下,服务器应返回按请求参数(sidx
和 sord
)排序的 all项目。人们可以只从服务器返回所有排序项目的数组,而不需要任何附加信息。
顺便说一下jqGrid的页面相关参数含义如下:
如果您使用
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"
}
},
...
});
最终是发送到服务器以获取数据的值。因此,如果您必须覆盖这些值,则需要更改这些值。
因此,请确保您在服务器端使用相同的值来获取这些值。