Обновите columnDef в agGrid без увеличения colIds - PullRequest
0 голосов
/ 27 апреля 2020

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

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

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

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

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

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

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

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

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

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

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

1 Ответ

0 голосов
/ 28 апреля 2020

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

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

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

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

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

...