Обновить 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.
Мой вопрос, вероятно, можно было бы решить двумя разными способами
Первый и лучший способ: метод обновления columnDefs без изменения colIds
В противном случае: метод сохранения состояния свертывания / развертывания групп вручную
Заранее всем большое спасибо
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. Тогда вы получите ожидаемую простуду.