ag-grid升级后空字段排序顺序异常,是否与未获取新版许可证有关
问题结论
该排序异常与未获取v25.1.0版本商业授权完全无关。
ag-grid未授权版本仅会输出授权提示日志、可选显示水印,不会修改排序、渲染等核心功能的执行逻辑,你遇到的是版本迭代后默认规则变更导致的兼容性问题。
根因说明
ag-grid在v20到v25的版本迭代中调整了空值的默认排序优先级:
- v20.1.0版本的默认ASC升序规则下,
null/空字符串类空值默认排在所有非空值末尾,和数据库存储过程返回的排序结果完全匹配 - 从v21版本开始,官方调整了空值默认排序逻辑,ASC升序场景下空值会默认排在最前面,就出现了前端展示和后端结果不一致的问题。
修复方案
不需要编写完整自定义排序逻辑,仅需要在「Tag Number」列的列定义中显式指定空值排序位置即可还原原有表现,参考配置如下:
const columnDefs = [ // 其他列定义 { field: 'tagNumber', headerName: 'Tag Number', sortable: true, // 显式指定空值排序规则,和数据库逻辑对齐 nullValue: { asc: 'last', // 升序时空值排最后 desc: 'first' // 降序时空值排最前,可根据实际需求调整 } } ]
如果当前版本不支持nullValue配置,也可以通过轻量的comparator实现相同效果:
comparator: (a, b) => { if ((a === null || a === '') && (b === null || b === '')) return 0; if (a === null || a === '') return 1; if (b === null || b === '') return -1; return a.localeCompare(b); }
内容的提问来源于stack exchange,提问作者Robin
相关产品推荐
相关产品推荐

