当有空字段时,不会发生 Ag 网格排序

Ag grid sorting not happening when there is a empty field

我有一个包含 10 列的 ag 网格 table,对于全局的所有列,我启用如下排序,

enableSorting= "true"
<ag-grid-angular.

里面

我们的一个列有日期属性,它也包含很少的空值。对于普通列表,它按预期排序,但是当涉及到具有空值的列表时,它没有正确排序。

有什么方法可以将空值限制在列表的末尾?

您可以像这样将自定义比较器传递到日期列 -

  {
    field: 'date',
    comparator: dateComparator,
  },

并定义一个自定义比较器以在最后保留空值

function dateComparator(date1, date2, nodeA, nodeB, isInverted) {
  if (date1 === null && date2 === null) {
    return 0;
  }
  if (date1 === null) {
    return isInverted ? 1 : -1;
  }
  if (date2 === null) {
    return isInverted ? 1 : -1;
  }
  return date1 - date2;
}

如果您的日期作为日期传递给 ag-grid,这应该有效。如果日期作为字符串传递,您可以遵循此 example

我终于找到了解决上述问题的方法。通过使用自定义比较器,这里是片段。

dateComparator(date1, date2) {
  if(!date1){
    date1 = '04/23/2300';
  } else if(!date2){
    date2 = '05/23/2300';
  }
  if (date1 === undefined || date1 === null || date1.length !== 10) {
    return null;
  }
  else{
    var yearNumber = date1.substring(6, 10);
    var dayNumber  = date1.substring(3, 5);
    var  monthNumber = date1.substring(0, 2);
    var result = yearNumber * 10000 + monthNumber * 100 + dayNumber;
    var date1Number = result;
  }
  if (date2 === undefined || date2 === null || date2.length !== 10) {
    return null;
  }
  else{
    var yearNumber2 = date2.substring(6, 10);
    var dayNumber2  = date2.substring(3, 5);
    var  monthNumber2 = date2.substring(0, 2);
    var result2 = yearNumber2 * 10000 + monthNumber2 * 100 + dayNumber2;
    var date2Number = result2;
  }
  // var date1Number = this.monthToComparable(date1);
  // var date2Number = this.monthToComparable(date2);
  if (date1Number === null && date2Number === null) {
    return null;
  }
  if (date1Number === null) {
    return -1;
  }
  if (date2Number === null) {
    return 1;
  }
  return Number(date1Number)- Number(date2Number);
}