gridOptions: { columnDefs: [ { field: 'numberColumn', comparator: function (valueA, valueB, nodeA, nodeB, isInverted) { var numA = parseFloat(valueA); var numB = parseFloat(valueB); if (numA === numB) { return 0; } return numA > numB ? 1 : -1; }}, ] }
使用浮点数比较运算时需要特别注意舍入误差等问题。
gridOptions: { columnDefs: [ { field: 'numberColumn', comparator: function (valueA, valueB, nodeA, nodeB, isInverted) { if (valueA === null || valueA === undefined || valueA === '') { return isInverted ? 1 : -1; } if (valueB === null || valueB === undefined || valueB === '') { return isInverted ? -1 : 1; } var numA = parseFloat(valueA); var numB = parseFloat(valueB); if (numA === numB) { return 0; } return numA > numB ? 1 : -1; }}, ] }
以上代码示例基于JavaScript编写,使用了ag-grid的columnDefs配置项中的comparator函数来实现排序。在比较函数中需要先进行空值判断,再进行值的比较处理。