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

如何利用AG Grid Community实现带page/page_size/count的远程API分页?

AG Grid Community 远程API分页实现方案

核心思路

通过AG Grid的分页配置与事件监听,在页码/每页条数变化时发起远程API请求,将返回的数据集和总条数同步到表格中,实现标准分页逻辑。

具体实现步骤

1. 基础配置表格分页

初始化AG Grid时开启分页,并设置默认每页条数:

const gridOptions = {
  // 开启分页
  pagination: true,
  // 默认每页条数,对应API的page_size
  paginationPageSize: 10,
  // 允许用户调整每页条数(可选)
  paginationPageSizeSelector: [10, 20, 50],
  // 你的列定义
  columnDefs: [
    { field: 'id' },
    { field: 'name' },
    // 其他列配置...
  ]
};

2. 监听分页事件,发起API请求

通过paginationChanged事件捕获页码或每页条数的变化,触发远程API调用:

gridOptions.paginationChanged = function(params) {
  const currentPage = params.newPage;
  const pageSize = params.paginationPageSize;

  // 调用你的远程API,传递分页参数
  fetch(`your-api-endpoint?page=${currentPage}&page_size=${pageSize}`)
    .then(res => res.json())
    .then(apiData => {
      // 更新表格数据列表
      params.api.setRowData(apiData.results);
      // 设置总条数,第二个参数false表示不重置当前页码
      params.api.setRowCount(apiData.count, false);
    })
    .catch(err => console.error('分页数据加载失败:', err));
};

3. 初始化加载第一页数据

在表格初始化完成后,手动触发第一页数据的加载:

document.addEventListener('DOMContentLoaded', () => {
  const gridDiv = document.querySelector('#ag-grid-container');
  new agGrid.Grid(gridDiv, gridOptions);

  // 加载初始页数据
  fetch(`your-api-endpoint?page=1&page_size=${gridOptions.paginationPageSize}`)
    .then(res => res.json())
    .then(apiData => {
      gridOptions.api.setRowData(apiData.results);
      gridOptions.api.setRowCount(apiData.count, false);
    });
});

关键说明

  • setRowCount(totalCount, keepCurrentPage):这就是你需要的设置总行数的API,传入返回的count值后,AG Grid会自动计算总页数并更新分页控件。
  • 若你的API页码从0开始,需要将currentPage转换为currentPage - 1后再传递给接口。
  • 分页控件的状态会自动根据总条数和当前页更新,无需手动处理分页按钮的禁用/启用逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 02:43:23