Ag-Grid: регулировка ширины столбцов и отображение горизонтальной полосы прокрутки, когда столбцы превышают размер контейнера

У меня есть панель столбцов для добавления / удаления столбцов из AG-Grid. Всего около 50 столбцов, по умолчанию 5 отображаются со свойством api.sizeColumnsToFit(). он работает нормально, но проблема возникает, когда пользователь пытается добавить больше столбцов, а столбцы выходят за пределы контейнера. он пытается уместиться в размер контейнера и напортачил.

если я удалил api.sizeColumnsToFit(), когда пользователь удалит все столбцы и оставит только 2-3 столбца, он будет соответствовать размеру, но показывает пустое пространство в сетке, что выглядит не очень хорошо.

Любая идея, как я могу условно настроить ag-grid для правильной работы следующим образом:

if columns_are_less_than_container_size
  api.sizeColumnsToFit()
else
  Do NOT apply sizeColumnsToFit
  rather show a horizontal scroll

1 ответ

Решение

Вы можете реализовать onDisplayedColumnsChanged и рассчитываем на основе ширины родительского элемента.

Вместо того getActualWidth вы можете определить минимальную ширину и использовать getMinWidth.

onDisplayedColumnsChanged(params) {
    const gridWidth = document.getElementById("parent").offsetWidth;
    const widthVisibleColumns = params.columnApi.getAllColumns()
      .filter(c => c.isVisible())
      .map(c => c.getActualWidth())
      .reduce((a, b) => a + b);
    if (gridWidth > widthVisibleColumns) {
      params.api.sizeColumnsToFit();
    }
}
Другие вопросы по тегам