You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jqgrid获取全部数据却出现异常行为的问题咨询

解决jqGrid中getGridParam('data')仅返回当前页数据的问题

我之前也碰到过一模一样的情况,当时折腾了好一会儿才搞明白原因,给你梳理下:

问题根源

当你设置loadonce: true时,jqGrid会把服务器返回的全部数据缓存到内部的localData参数里,但data这个参数默认只存储当前分页下显示的那部分数据。

你看到控制台展开数组时显示了全部数据,其实是浏览器控制台的“实时引用”特性搞的鬼——当你手动展开数组的时候,它会读取这个数组的最新状态,但在你执行console.log(allRowsInGrid.length)的那一刻,data里确实只有当前页的数据,所以长度不对。

解决方案

直接改用localData参数来获取全部缓存的数据就可以了:

var allRowsInGrid = $('#table_outgoing_calls_report').jqGrid('getGridParam','localData');
console.log(allRowsInGrid);
console.log(allRowsInGrid.length);

额外注意事项

  • 确保你的jqGrid版本支持localData(目前主流的jqGrid版本都支持这个参数)
  • 建议把获取数据的逻辑放在loadComplete回调里,确保数据已经完全加载完成后再执行:
$('#table_outgoing_calls_report').jqGrid({
    // 你的其他配置项
    datatype: 'json',
    loadonce: true,
    loadComplete: function() {
        var allRows = $(this).jqGrid('getGridParam','localData');
        console.log('全部数据长度:', allRows.length);
    }
});

内容的提问来源于stack exchange,提问作者Den B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:55:41