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

已排序ag-grid如何正确获取当前行的上一行/下一行节点?

问题原因

ag-grid 中getRowNode()方法接收的参数是行节点的唯一标识ID,而非当前表格经过排序、筛选后的显示顺序索引。你拿到的params.rowIndex是行在原始未处理数据集中的索引,表格排序后显示顺序和原始数据顺序不一致,直接对原始索引加减后查询就会拿到不相关的行。

解决方案

你可以使用ag-grid提供的getRenderedNodes()方法获取当前表格按显示顺序排列的所有行节点数组,通过定位当前行在该数组中的下标来获取相邻行,示例代码如下:

class ResultModal {
    constructor(params) {
        this.params = params;
        // 获取当前表格按显示顺序排列的所有行节点
        const renderedRows = params.api.getRenderedNodes();
        // 找到当前行在渲染数组中的下标,如果未配置自定义rowId,可替换为node.data.你的行唯一字段 === params.data.你的行唯一字段匹配
        const currentDisplayIndex = renderedRows.findIndex(node => node.id === params.node.id);
        // 边界判断后获取上下行,避免下标越界报错
        this.previousRow = currentDisplayIndex > 0 ? renderedRows[currentDisplayIndex - 1] : null;
        this.nextRow = currentDisplayIndex < renderedRows.length - 1 ? renderedRows[currentDisplayIndex + 1] : null;
        this.result = params.data;
    }
}
注意事项
  • 如果你的表格开启了分页,getRenderedNodes()只会返回当前分页的行节点,刚好符合你获取当前页面相邻展示行的需求
  • 如果需要获取全局排序后的全量相邻行(跨分页),可以使用api.forEachNodeAfterFilterAndSort()方法遍历全量处理后的行节点,自行构建顺序数组后再做查询

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:57:01