Установить новое определение столбца с помощью 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 Разрешить дельта-изменения в определениях столбцов.