Установить новое определение столбца с помощью setColumnDefs больше не работает

Я пытаюсь установить новые определения столбцов, вызывая setColumnDefs, используя grid API. Это не работает, как ожидалось. Имена заголовков столбцов больше не будут обновляться!

Смотрите этот Plunkr: версия 19.1.x

Версия 19.0.0 является последней рабочей версией.

Смотрите этот Plunkr: версия 19.0.0

Для меня это кажется ошибкой!?

В своем проекте я использую Angular 5, и я замечаю то же поведение.

2 ответа

Я смог воспроизвести ваше поведение. Следующее (грязное) обходное решение работает:

  gridOptions.api.setColumnDefs([]);
  gridOptions.api.setColumnDefs(newColDefs);

Установка columnDefs в пустой массив, а затем передача newColDefs, кажется, дает то, что вы ищете.

Полагаю, это до нового способа обнаружения изменений в последней версии.

Если вы обновите свой код следующим образом:

function updateColDef()
{ 
    let data = [];
    columnDefs.forEach(function(colDef) { 
        colDef.headerName = colDef.headerName + ' X ';
        data.push(colDef);
  })

  data.push( {
      headerName: 'New Column',
  });

  gridOptions.api.setColumnDefs(data);
}

Это будет работать как ожидалось.

Обновить:

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

Сравнение определений столбцов выполняется на 1) сравнении ссылок на объекты и 2) идентификаторе столбца, например, colDef.colId. Если либо ссылка на объект соответствует, либо идентификатор столбца совпадает, то сетка обрабатывает столбцы как один и тот же столбец.

В первом случае это было сравнение объекта, во втором примере (после обновления) его colId дело.

изменения произошли в версии 19.1

AG-1591 Разрешить дельта-изменения в определениях столбцов.

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