diff --git a/packages/devextreme/js/__internal/grids/grid_core/columns_controller/m_columns_controller.ts b/packages/devextreme/js/__internal/grids/grid_core/columns_controller/m_columns_controller.ts index be977eb272a1..d020c375b3ce 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/columns_controller/m_columns_controller.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/columns_controller/m_columns_controller.ts @@ -1494,22 +1494,53 @@ export class ColumnsController extends modules.Controller { const column = findColumn(columns, identifier); if (column) { + const isOptionString = isString(option); + if (arguments.length === 1) { return extend({}, column); } - if (isString(option)) { - if (arguments.length === 2) { - return columnOptionCore(that, column, option); + + if (isOptionString && arguments.length === 2) { + return columnOptionCore(that, column, option); + } + + const setColumnOption = () => { + if (isOptionString) { + columnOptionCore(that, column, option, value, notFireEvent); } - columnOptionCore(that, column, option, value, notFireEvent); - } else if (isObject(option)) { - each(option, (optionName, optionValue) => { - columnOptionCore(that, column, optionName, optionValue, notFireEvent); - }); + if (isObject(option)) { + each(option, (optionName, optionValue) => { + columnOptionCore(that, column, optionName, optionValue, notFireEvent); + }); + } + + fireColumnsChanged(that); + }; + + if (!notFireEvent && this.needToWrapToBeginEndUpdate(option)) { + this.wrapToBeginEndUpdate(setColumnOption); + } else { + setColumnOption(); } + } + } - fireColumnsChanged(that); + private needToWrapToBeginEndUpdate(option: string | Record): boolean { + const isWidthChanging = isObject(option) + ? 'width' in option + : option === 'width'; + + return isWidthChanging && !this._updateLockCount; + } + + private wrapToBeginEndUpdate(callback: () => void): void { + if (!isFunction(callback)) { + return; } + + this.component.beginUpdate(); + callback(); + this.component.endUpdate(); } private clearSorting() {