未触发农业电网比较器功能

ag-grid comparator function not being triggered

我将 ag-grid 9.X 与 angularJs 一起使用,当尝试为日期列设置比较器函数时,它没有被触发。

      {
      headerName: 'Date',
      field: 'lastDate',
      width:100,
      sortable: true,
      comparator: dateComparator,
      }

我也设置了enableSorting: true。该功能是否有可能在该版本的 ag-grid 中不可用?

谢谢!

我认为你的比较器的实现是个问题。你在使用静态函数吗?如果不行,试试这个,看看它是否有效。

{
    headerName: 'Date',
    field: 'lastDate',
    width:100,
    sortable: true,
    comparator: (a, b) => {
        //implement your comparator here.
    },
}

因此,由于我无法使比较器功能正常工作,我使用了以下技巧对日期列进行排序:

  • 确保输入网格的原始数据具有该列的 Javascript 日期对象而不是字符串(以便 ag-grid 的排序算法(使用“>”运算符)可以将这些日期作为日期而不是字符串进行比较) 示例:

            data.forEach(function(obj,i){
             let dateStr = obj.date
             let year = dateStr.substring(0, 4)
             let month =  dateStr.substring(5, 7)
             let day = dateStr.substring(8, 10)
             let time =  dateStr.substring(11, 21)
             let date = new Date(year+"-"+month+"-"+day+" "+time)
             data[i].date = date
            })
            $scope.gridConfig.data = data
    

其实通过这个问题我了解到ag-grid排序算法不作用于cellRenderer渲染的数据,也不作用于valueGetter。它实际上使用了原始数据。

  • 可选:这些列将以 Javascript 日期对象 格式 呈现。 如果您希望这些日期具有特定格式,您可以使用 cellRenderer 函数或该列的 valueGetter 将这些日期解析回原始格式。不用担心,排序不会受到影响,因为它仍会使用原始数据中的日期对象。

您必须添加以下内容:

sort: 'asc',