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" } ]);
测试步骤:
- 按住Shift键,先点击Submission 1列降序排序,此时前两行的Submission 1值相同;
- 继续按住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
相关产品推荐
相关产品推荐

