下午好,我直接为拼写而不是识字而道歉,我非常了解英语。 以下问题 - 我无法在jqgrid中浏览页面,通常应该这样:
onPaging : function(pgButton)
{
var nextPg = $("#users").getGridParam("page");
$("#editGrid").trigger("reloadGrid",[{page:nextPg}]);
}
在我看来,或锁定代码或不够的代码。提示出现了什么问题?
代码:
sortname: 'id',
sortorder: "desc",
height: '100%',
gridview: true,
viewrecords: true,
rowNum: 100,
rowList: [100, 500, 1000],
autoencode: true,
loadonce:true,
pager: '#pager',
search:true,
multiselect: true,
autowidth: true,
onPaging : function(pgButton){
var nextPg = $("#users").getGridParam("page");
$("#editGrid").trigger("reloadGrid",[{page:nextPg}]);
},
我写了分页,但代码很大,最好用更方便和更小的代码替换它。
答案 0 :(得分:0)
如果您使用loadonce:true
选项,则服务器应返回所有数据,而不是仅返回一页的数据。如果您需要显示的行数不是很多(例如少于1000行),则loadonce:true
选项的使用非常实用。因此,您应该删除修改服务器代码的loadonce:true
选项,以便立即返回所有页面。
如果您确实有一些复杂的场景,并且需要使用loadonce:true
,但要实现服务器端分页,那么您应该在datatype
内将"local"
设置为onPaging
。您不应该直接在reloadGrid
内拨打onPaging
。 jqGrid自己这样做。
答案 1 :(得分:0)
顺便说一下它的有趣之处(我不知道它的优化程度),我这样做了: 在js
onPaging : function(pgButton){
var gridParamRowNum = $('#users').getGridParam('rowNum');
var gridParamRowAll = $('#users').getGridParam('records');
var gridParamPage = $('#users').getGridParam('page');
if(pgButton === 'next_pager')
{
gridParamPage = gridParamPage + 1;
}else
{
gridParamPage = gridParamPage - 1;
gridParamRowAll = gridParamRowAll + 100;
}
AdminUsers.ajaxParams.gridParamPage = gridParamRowNum * gridParamPage - 100;
AdminUsers.ajaxParams.gridParamRowNum = gridParamRowAll;
},
其中AdminUsers.ajaxParams.gridParamPage和AdminUsers.ajaxParams.gridParamRowNum是服务器的POST请求,
和php:
if ( isset($_REQUEST['gridParamPage']) && isset($_REQUEST['gridParamRowNum'])) {
$limit = $_REQUEST['gridParamRowNum'];
$offset = $_REQUEST['gridParamPage'];
$usersFactory->setLimit((int)$limit)->setOffset((int)$offset);
}
并通过setLimit和setOffset函数将查询输出并发送给客户端