jq网格集记录计数
jqGrid set records count
我有一个指向外部API的jqGrid,我无法控制它。 此外部 API 有两个终结点:
- 数据终结点 - 返回表行数据
- 计数终结点 - 返回分页计数等,
根据用户输入,jqGrid 筛选器将转换为适当的查询字符串,以筛选外部 API 的数据和计数终结点。
我有 jqGrid 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: 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...所以我可以先请求计数,当它返回时,然后去获取数据?
- 在计数返回并设置
gridTotal
后重新运行 jsonreader 功能 - 使用类似承诺的结构来解决记录计数
已更新以显示@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);
});
}
我希望我正确理解你的问题。在这种情况下,您可以先从数据端点加载主要数据。然后(在loadComplete
内部),您可以手动启动新的$.ajax
请求,以从计数端点获取数据并更新$.ajax
回调success
内的分页数据。
更新寻呼机需要做的是:
- 根据计数端点返回的数据设置 jqGrid 的
page
、records
和lastpage
参数。 - 调用
$("#grid")[0].updatepager(false, true);
,将使用上述选项并刷新寻呼机上的信息。
您可以在旧答案和.updatepager(false, true)
的用法示例中看到。
相关文章:
- 使用Dnamics CRM 2011中的JavaScript读取子网格的所有记录,而不考虑活动页面
- CRM 2011-在插入新记录或修改现有记录时捕获子网格的事件
- 访问所选记录的网格值并使用 javascript 传递到新窗口
- 子网格:限制用户仅选择一条记录
- 剑道网格在删除后仍显示最后一条记录
- FetchXML 查询在子网格中返回的动态 CRM 2015 中的活动记录 - 主题超链接将打开新的活动
- 网格视图在我输入特定记录名称时不显示记录
- jq网格集记录计数
- 单击添加按钮时需要在网格中添加多个记录
- 剑道网格 - 不允许编辑某些记录
- 更改网格 extjs3 中的记录边框颜色
- 如何在 ExtJS5 中网格编辑器组合的当前记录中添加项目
- 剑道网格值在向网格添加新记录时不会更改
- 将记录添加到网格ext js 3.4中
- Extjs:如何使用存储记录作为网格的存储
- Extjs从单元格编辑器访问网格记录
- 如何在剑道网格中添加、更新或删除记录时添加一个隐藏字段
- 如何在ext-js网格中将记录数据显示为链接
- 剑道ui网格多次添加记录
- Extjs 3.4删除记录后重新加载网格