функция компаратора ag-grid не запускается - PullRequest
0 голосов
/ 17 июня 2020

Я использую ag-grid 9.X с angularJs, и при попытке установить функцию компаратора для столбца даты он не срабатывает.

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

Я тоже ставил enableSorting: true. Есть ли вероятность, что эта функция недоступна в этой версии ag-grid?

Спасибо!

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Итак, поскольку мне не удалось заставить работать функцию компаратора, я использовал следующие советы для сортировки столбцов даты:

  • Убедившись, что исходные данные, которые передаются в grid имеет 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 объекте даты формате . Если вы хотите иметь специальный формат c для этих дат, вы можете использовать функцию cellRenderer или valueGetter для этого столбца, чтобы преобразовать эти даты обратно в исходный формат. И не беспокойтесь, сортировка не пострадает, поскольку она по-прежнему будет использовать объекты даты из исходных данных.
0 голосов
/ 17 июня 2020

Думаю, проблема в реализации вашего компаратора. вы используете функцию stati c? Если нет, попробуйте это и посмотрите, работает ли это.

{
    headerName: 'Date',
    field: 'lastDate',
    width:100,
    sortable: true,
    comparator: (a, b) => {
        //implement your comparator here.
    },
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...