Как настроить формат отображения даты в AG-Grid

1

Как настроить формат столбцов даты в AG-Grid? Когда я смотрю на образцы, я вижу даты в форматах dd/mm/yyyy, но мои столбцы даты всегда отображаются в довольно длинном формате, который выглядит так: "Сб 12 мая 2012 01:00:00 GMT + 0100 (BST)". Я бы хотел, чтобы формат YYYY-MM-dd по умолчанию позволял пользователям самостоятельно настраивать их желаемый формат. Образцы, которые я нашел, показывают, как выполнять персонализированную фильтрацию с помощью компаратора и тому подобное, но по умолчанию все работает отлично для меня, за исключением того, как даты фактически отображаются.

Изображение 174551

Спасибо, Троя

Теги:
ag-grid
ag-grid-react

4 ответа

0

Это для версии Angular2+. Если вы используете библиотеку моментов в вашем приложении. Тогда работа действительно проста

В вашем файле .ts:

    import * as moment from 'moment';

{
    headerName: 'End Date',
    field: 'endDateUTC',
    minWidth: 80,
    maxWidth: 100,
    valueFormatter: function (params) {
        return moment(params.value).format('yyyy-MM-dd');
    },
},

И результат, который вы получите:

Дата окончания: 2019-10-05

Также для возможности настройки формата даты для пользователей: Вы можете добавить раскрывающийся список в приложении, чтобы они могли выбрать свой стиль даты и использовать вышеуказанный valueFormatter, и динамически передавать функцию со многими форматами даты, доступными из библиотеки моментов.

Надеюсь, это будет полезно для кого-то.

  • 0
    Для меня этот способ заканчивается отображением «Неверная дата» в ячейке ... :(
  • 1
    @TheCuBeMan Тогда я думаю, что ваше значение - строка. Вы должны сначала преобразовать его в Date, а затем использовать вышеуказанную функцию
Показать ещё 1 комментарий
0

Хотя обработчик ячеек и форматирование значений будут работать, я бы использовал valueGetter для столбца что-то вроде этого -

headerName: "Issue Date",
valueGetter: function dateValueGettter(params) {
  var date = $filter("date")(params.getValue("issueDate"), 'yyyy-MM-dd');
  return date;
}

В приведенном выше примере используется фильтр угловой даты.

Преимущество использования метода getter заключается в том, что сортировка и фильтрация в таком столбце теперь могут основываться на значениях, возвращаемых значением getter.

  • 0
    Если я правильно понимаю, идея состоит в том, чтобы просто вернуть его в виде строки в выборке с сервера, и это то, что отображается. Я был в состоянии изменить мою выборку, чтобы соответствующим образом десериализовать их в объекты даты уже, а затем работает сортировка и подбор. Недостатком вашего подхода, который я вижу, является то, что I18N или пользовательское форматирование необходимо будет применить на стороне сервера перед отправкой результатов клиенту. Это может быть не так уж и плохо, но это делает код на стороне сервера, как минимум, универсальным, если ему нужно знать, кому он отправляет данные, и форматировать его соответствующим образом для каждого клиента.
0

Для этого я создаю средство визуализации ячеек:

cellRendererFormattedDate = params => {
   var date = $filter("date")(params.value, 'yyyy-MM-dd h:mm:ss a');
   return '<div style="text-align:right;">${date}</div>';
}

Убедитесь, что в вашем контроллере введен фильтр $.
В вашем столбцеDefs обязательно укажите cellRenderer: cellRendererFormattedDate

  • 0
    Простите за незнание JavaScript, но что такое $ filter и как мне его внедрить. Это класс, предоставленный реагировать?
  • 0
    Извините за поздний ответ, я не видел вашего вопроса. $ filter - это угловой API. Ссылка содержит подробную информацию об этом.
Показать ещё 1 комментарий
0

Лучшим способом для этого было бы использовать форматтер

https://www.ag-grid.com/javascript-grid-value-getters/

Надеюсь это поможет

Ещё вопросы

Сообщество Overcoder
Наверх
Меню