gpt4 book ai didi

javascript - jqGrid 设置记录数

转载 作者:行者123 更新时间:2023-11-30 16:14:18 25 4
gpt4 key购买 nike

我有一个指向我无法控制的外部 API 的 jqGrid。此外部 API 有两个端点:

  • Data Endpoint - 返回表格行数据
  • Count 端点 - 返回分页计数等,

基于用户输入,jqGrid 过滤器被转换为适当的查询字符串以过滤外部 API 的DataCount 端点。

我有 jqGrids url 是根据用户输入动态构建的,目标是 Data 端点...在 loadBeforeSend() 期间事件它调用Count 端点以根据用户过滤器获取最新的分页信息。

我正在使用 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);
});
}

Data 端点获取非常有效,问题是如何调用 Count 端点并更新分页数据。

尝试了以下方法:

  • 对记录、last_page 等使用setGridParam
  • 使用 getGridParam('reccount')
  • 只需更新 html 使其看起来正确(无效,因为分页将关闭)

有没有办法

  • 为 jqgrid URL 手动触发 XHR...这样我就可以先请求计数,当它返回时再去获取数据?
  • 一旦计数返回并设置了 gridTotal,就重新运行 jsonreader 功能
  • 使用类似 promise 的结构来解析记录计数

已更新以显示@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);
});
}

最佳答案

希望我能正确理解您的问题。在这种情况下,您可以先从 Data 端点加载主要数据。然后(在 loadComplete 内部)您可以启动 new $.ajax 手动请求以从 Count 获取数据端点并更新 $.ajaxsuccess 回调中的分页数据。

更新寻呼机需要做的是:

  1. 根据Count端点返回的数据,设置jqGrid的pagerecordslastpage参数.
  2. 调用 $("#grid")[0].updatepager(false, true); 将使用上述选项并刷新寻呼机上的信息。

可以在the old answer中看到以及 .updatepager(false, true) 的使用示例。

关于javascript - jqGrid 设置记录数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35756961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com