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

如何基于Ag-grid实现分页数据批量加载(非一次性全量获取)?

嗨,这个需求AG Grid其实早就给你准备好了成熟的方案——服务器端分页(Server-Side Pagination),完美匹配你要的“按需加载指定页数据”的场景。我给你一步步拆解怎么实现:

1. 先把Grid切换到服务器端模式

首先得在AG Grid的配置里开启服务器端数据源模式,核心就是加一行:

rowModelType: 'serverSide'

设置完这个,Grid就不会一次性加载所有数据了,而是会根据用户的分页操作,主动向你要对应页的数据。

2. 实现按需取数的核心逻辑

接下来你需要定义一个serverSideDatasource,里面的getRows方法是关键。当用户切换到第10页时,AG Grid会自动把当前页的起始行、结束行等参数传给这个方法,你就可以用这些参数去请求后端接口,精准获取第11-20行(也就是第10页)的数据。

给你个实际代码例子(用原生JS举例,React/Vue版本逻辑一致):

const myDatasource = {
  getRows(params) {
    // 从AG Grid的请求参数里解析出页码和每页条数
    const pageSize = params.request.endRow - params.request.startRow;
    const currentPage = (params.request.startRow / pageSize) + 1;

    // 调用你的后端接口,把分页参数传过去
    fetch(`/api/your-data?page=${currentPage}&pageSize=${pageSize}`)
      .then(res => res.json())
      .then(response => {
        // 假设后端返回{ totalCount: 1000, data: [...] }
        params.success({
          rowData: response.data, // 把当前页的数据传给Grid
          rowCount: response.totalCount // 告诉Grid总共有多少条数据,用来生成分页器
        });
      })
      .catch(err => {
        params.fail(); // 请求失败时通知Grid
        console.error('数据加载失败:', err);
      });
  }
};

// 把数据源绑定到Grid上
gridApi.setServerSideDatasource(myDatasource);
3. 开启并配置分页组件

别忘了在Grid配置里开启分页功能,指定每页显示的条数:

pagination: true,
paginationPageSize: 10, // 这里设置成10,刚好对应你说的每页10条数据
额外小Tips
  • 如果之后需要加筛选、排序功能,params.request里还会包含filterModel、sortModel这些参数,你可以把它们一起传给后端,实现带条件的分页加载。
  • 不管你用的是AG Grid的哪个框架版本(React/Vue/Angular),核心逻辑都是这三步,只是组件化的写法略有不同,照着对应版本的示例套就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:14:43