1
我有一个jqGrid指向外部API,我无法控制。这种外部API有两个端点:jqGrid设置记录计数
- 数据端点 - 返回表行数据
- 计数端点 - 返回分页计数等,根据用户输入的jqGrid过滤
转换为相应的查询字符串以过滤外部API的数据和计数端点。
我正在建造基于jqGrids url
中动态用户输入的主攻数据端点...和loadBeforeSend()
事件过程中,它调用计数端点,我们将根据用户的过滤器的最新分页信息。
我使用jsonreader功能:
jsonReader: {
root: 'products',
id: 'id',
records: function() {
return gridTotal;
},
total: function() {
// var totalPages = (gridTotal + reqOptions.limit-1)/reqOptions.limit;
var totalPages = Math.ceil(gridTotal/reqOptions.limit);
console.log('totalPages: ' + totalPages);
return totalPages;
},
page: function() {
//var totalPages = Math.ceil(gridTotal/20);
console.log('currentPage: ' + reqOptions.page);
return reqOptions.page;
}
},
样品的loadBeforeSend方法:
loadBeforeSend: function (xhr, settings) {
settings.url = _newUrl || endpointURL;
// Lets fetch our data count...this may change as items get published so lets fetch during load
products.count(accessToken, _filterQuery)
.success(function (resp) {
// This is the total number of products that match our current search
gridTotal = resp.count;
}).catch(function (err) {
console.error(err);
});
}
从数据端点抓取的作品真的很好,问题是如何调用计数端点并更新分页数据。
尝试了以下内容:
- 使用
setGridParam
备案,last_page等, - 使用
getGridParam('reccount')
- 只需更新HTML,以查找正确的(不是有效的,因为呼叫将被关闭)
有没有办法来
- 手动启动jqgrid URL的XHR ...所以我可以首先请求计数,当它返回然后去获取数据?
- 重新运行jsonreader功能一旦计数的回报和
gridTotal
设置 - 使用状结构的承诺,以解决记录计数
更新,以显示@Oleg解决方案
loadBeforeSend: function (xhr, settings) {
settings.url = _newUrl || endpointURL;
// Lets fetch our data count...this may change as items get published so lets fetch during load
products.count(accessToken, _filterQuery)
.success(function (resp) {
// This is the total number of products that match our current search
gridTotal = resp.count;
gridTotal = resp.count;
grid.jqGrid('setGridParam', {
page: gridOpts.jsonReader.page(),
records: gridTotal,
lastpage: gridOpts.jsonReader.total()
});
grid[0].updatepager(false, true);
}).catch(function (err) {
console.error(err);
});
}
是的,你对这个问题的理解是准确的,我希望我解释得很好,很好的工作=)...非常好我跑过那个'旧回答',但'pageServer','recordsServer'和'lastpageServer '为空。而不是从使用这些字段的'getGridParam'抓取,我只记得我的jsonreader函数。非常感谢!! @ Oleg #FTW #About – afreeland
@afreeland:不客气! – Oleg