首页 > 解决方案 > ag-grid 行排序不适用于小数和空值

问题描述

我正在使用版本为 20.2.0 的 ag-grid

列包含正或负十进制值,例如 -0.000023 或 0.000000056387 或只是空白。

我已经为此列应用了 sortable: true

触发排序时,排序顺序如下所示:

0.0205
0.00883
-0.00893
0.0142
0.000239
-0.0135
0.0345
<blank>
0.00456
-0.355
-0.00166

我的期望是所有非空白数字都应该正确排序,并且所有空白都应该放在最后。

我试图在列定义中添加 valueFormatter 为:

{
headerName: field_name,
sortabke: true,
field: field_name,
valueFormatter: format_numbers
}

function format_numbers(val) {
if(val.value === 'NaN') {
return '';
}
else {
return Number(val.value).toPercision(3);
}

标签: sortingag-gridag-grid-angular

解决方案


请问你能提供一个plunker来演示吗?

valueFormatter 用于格式化显示给用户的值。您需要一个比较器函数来更改行的排序方式

https://www.ag-grid.com/angular-grid/row-sorting/#example-custom-sorting

{
headerName: field_name,
sortable: true,
field: field_name,
comparator: myComparator
}

function myComparator(value1, value2) {
  if (value1 === null && value2 === null) {
    return 0;
  }
  if (value1 === null) {
    return -1;
  }
  if (value2 === null) {
    return 1;
  }
  return value1 - value2;
}

免责声明,我刚刚从 ag-grid 网站复制了它,以防将来链接失败。不保证没有错别字!


推荐阅读