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

Ajax响应绑定JqGrid后分页功能失效,求解决方案

问题分析与解决方案

你的分页参数传递失效,核心原因是当前使用的datatype: "jsonString"是本地数据模式,这种模式下jqGrid只会基于已加载的静态数据做客户端分页,不会向服务器发起新的请求传递分页参数(如page、rows)。以下分两种场景给出修复方案:

场景1:服务器端分页(推荐,适合大数据量)

如果你的需求是点击分页按钮时,向服务器请求对应页的数据,需要修改配置如下:

  1. 替换数据模式:将datatype改为"json",移除datastr配置,由jqGrid自动发起Ajax请求。
  2. 配置请求地址:添加url字段指向你的后端接口。
  3. 适配请求方式:通过mtype指定GET/POST(根据后端接收方式选择)。
  4. 确保参数自动传递:jqGrid会自动向服务器传递分页参数:page(当前页)、rows(每页条数)、sidx(排序字段)、sord(排序方向),后端需接收并处理这些参数,返回对应页的数据及分页元信息。

修改后的代码示例:

$("#tblrent").jqGrid({
    url: "你的后端接口地址", // 替换为实际接口路径
    datatype: "json",
    mtype: "POST", // 按需改为GET
    height: "auto",
    colNames: stock.getColumnName(data1[0]),
    colModel: stock.getColmodel(data1[0]),
    caption: "Stocks",
    viewrecords: true,
    gridview: true,
    rowNum: 5,
    rowList: [5, 10, 20, 50, 100],
    pager: $("#divPager"),
    jsonReader: { 
        repeatitems: false, 
        root: "rows", 
        page: "page", 
        total: "total", 
        records: "records" 
    },
    postData: {
        // 可选:添加额外需要传递给后端的参数,如搜索条件
        // exampleParam: "exampleValue"
    },
    loadComplete: function (responseData) {
        // 加载完成后的回调,responseData为后端返回的JSON数据
    },
    onSelectRow: function (id) {

    },
    onCellSelect: function (rowId, iCol, content, event) {
        var rowData = jQuery('#tblrent').jqGrid('getRowData', rowId);
        var rowData1 = JSON.stringify(rowData);
        localStorage.setItem('selectedRow', rowData1);
    }
});

场景2:客户端分页(仅适合小数据量)

如果后端一次性返回所有数据,需要前端自行分页,需确保:

  • GRIDDATA.rows是全量数据,而非仅第一页数据。
  • total字段计算正确:total = Math.ceil(records / rowNum)(你的示例中records:10、rowNum:5,total:2是正确的)。
  • 确认分页容器#divPager已正确渲染在DOM中。

若仍有问题,可检查是否在初始化后调用了gridUnload或其他重置方法,导致分页组件失效。

内容的提问来源于stack exchange,提问作者Ranjan Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 17:54:55