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

AgGridReact多排序异常:仅首列生效,后续列无排序效果求助

问题排查与解决方案

核心原因

你的测试数据中,首次排序的列(Submission 1/Submission 2)所有值都是唯一的——比如Submission 1的三个值1221@1、1222@1、1333@1没有重复。AgGrid的多排序逻辑是先按主排序字段排序,仅在主字段值相同的行中,再按次要排序字段调整顺序。由于你的主排序字段没有重复值,次要排序没有可作用的行,所以数据顺序看起来没有变化,但实际上多排序逻辑已经生效。

验证方法

修改测试数据,让多行在主排序字段上有重复值,比如:

const [rowData, setRowData] = useState([
    {submission_1: "1221@1", submission_2: "9889@2", suspicious_score: "35000"},
    { submission_1: "1221@1", submission_2: "9889@1", suspicious_score: "32000" },
    { submission_1: "1333@1", submission_2: "7889@1", suspicious_score: "72000" }
]);

测试步骤:

  1. 按住Shift键,先点击Submission 1列降序排序,此时前两行的Submission 1值相同;
  2. 继续按住Shift键点击Submission 2列降序排序,你会看到前两行的顺序发生交换,证明多排序生效。

配置补充

确保你的AgGrid配置支持多排序:

  • defaultColDef中sortable: true已开启列排序,可显式添加multiSortable: true明确允许多排序;
  • 默认通过Shift键+点击列头添加次要排序条件,若需修改触发键,可设置multiSortKey属性(比如multiSortKey="ctrl")。

修改后的组件代码示例:

<AgGridReact
    className="ag-theme-alpine"
    rowData={rowData}
    columnDefs={columnDefs}
    defaultColDef={{ sortable: true, filter: true, multiSortable: true }}
    multiSortKey="shift"
/>

额外说明

如果你的项目使用服务器端排序,则需要监听sortChanged事件,获取所有排序条件(gridApi.getSortModel()),再自行处理排序逻辑并更新rowData。但你的场景是客户端排序,无需此操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 00:23:19