Обновить columnDef в agGrid без увеличения colIds

У меня есть различные запросы, в которых необходимо изменить columnDefs в моем agGrid, поскольку для соответствующего свойства нет метода API (например, при изменении фильтра столбца и типа на числовой).

В этом случае я сейчас создаю новый columnDef и устанавливаю его через...api.setColumnDefs(); Похоже, что это правильный способ обновить columnDefs. Прямой доступ к текущему свойству columnDefs сетки не будет работать (по крайней мере, сетка не может быть обновлена ​​для принятия изменений)

Это работает довольно хорошо, за исключением того факта, что это, по-видимому, воссоздает столбцы с нуля, следовательно, им присваиваются новые (увеличенные) colId. например, столбец "первый" имел colId: 0 до обновления colDef и colId: 1 после обновления.

Теперь, когда я также сталкиваюсь с просьбами сохранять состояния столбцов при изменениях, такое поведение вызывает у меня некоторые проблемы. Поскольку getColumnState() и setColumnState() будут работать только тогда, когда colIds такие же, как и раньше, мне нужно добавить собственную логику.

Для этого я в настоящее время обновляю colId в своих сохраненных состояниях, сопоставляя headerNames... Хотя это не так хорошо, я мог бы жить с этим пока.

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

RememberGroupStateWhenNewData: true также не работает из-за изменения / увеличения colIds.

Мой вопрос, вероятно, можно было бы решить двумя разными способами

  1. Первый и лучший способ: метод обновления columnDefs без изменения colIds

  2. В противном случае: метод сохранения состояния свертывания / развертывания групп вручную

Заранее всем большое спасибо

1 ответ

Как упоминалось в @Pratik_Bhat, вы можете указать colId в своем colDef.

Кроме того, я обнаружил, что при переопределении столбцов с colIds, которые совпадают в новых colDefs и старых colDefs, ag-grid будет добавлять подчеркивание и число к colId.

Итак, если у вас есть colDef с colId 'columnA', и вы переопределяете столбцы с другим набором столбцов, имеющим столбец с colId 'columnA', вы получите 'columnA' и 'columnA_1'.

Вы увидите только новый столбец в сетке, но ваш новый столбец неожиданно будет иметь значение colId вроде "columnA_1". Если вы зависите от знания colId, это приведет к поломке вашего кода.

К счастью, есть простой ответ. Перед назначением новых colDefs назначьте пустой массив. Похоже, это "очищает" старые colDefs. Сразу после этого назначьте свои настоящие colDefs. Тогда вы получите ожидаемую простуду.

Другие вопросы по тегам