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