【问题标题】:Ag grid sorting not happening when there is a empty field当有一个空字段时,Ag 网格排序不会发生
【发布时间】:2020-08-07 04:01:30
【问题描述】:

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

enableSorting= "true"
<ag-grid-angular里面。

我们的一个列具有日期属性,并且它也包含很少的空值。对于普通列表,它按预期排序,但对于具有空值的列表,它的排序不正确。

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

【问题讨论】:

    标签: angular ag-grid columnsorting


    【解决方案1】:

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

      {
        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

    【讨论】:

    • 是的,你是对的,我已经与 ans 一起重新发布。在这里,我只是将空日期设置为随机的大日期。谢谢:-)
    【解决方案2】:

    我终于可以找到上面的方法了。通过使用自定义比较器,这里是 sn-ps。

    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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多