diff --git a/e2e/testcafe-devextreme/tests/dataGrid/etalons/T1240079.png b/e2e/testcafe-devextreme/tests/dataGrid/etalons/T1240079.png new file mode 100644 index 000000000000..82f075427e06 Binary files /dev/null and b/e2e/testcafe-devextreme/tests/dataGrid/etalons/T1240079.png differ diff --git a/e2e/testcafe-devextreme/tests/dataGrid/scrolling.ts b/e2e/testcafe-devextreme/tests/dataGrid/scrolling.ts index c1b3d23f7604..ea69ee19cba6 100644 --- a/e2e/testcafe-devextreme/tests/dataGrid/scrolling.ts +++ b/e2e/testcafe-devextreme/tests/dataGrid/scrolling.ts @@ -1720,3 +1720,47 @@ test('The row alternation should display correctly when grouping and virtual scr grouping: { autoExpandAll: true }, scrolling: { mode: 'virtual', useNative: false }, }))); + +test('DataGrid - Gray boxes appear when the push method is used to remove rows in infinite scrolling mode (T1240079)', async (t) => { + const dataGrid = new DataGrid('#container'); + const { takeScreenshot, compareResults } = createScreenshotsComparer(t); + const data = [ + { id: 1, text: 'text 1' }, + { id: 2, text: 'text 2' }, + ]; + const changes = data.map((item) => ({ + type: 'remove', + key: item.id, + })); + + await dataGrid.apiPush(changes); + await t + .expect(await takeScreenshot('T1240079', dataGrid.element)) + .ok() + .expect(compareResults.isValid()) + .ok(compareResults.errorMessages()); +}).before(async () => { + await createWidget('dxDataGrid', () => { + const data = [ + { id: 1, text: 'text 1' }, + { id: 2, text: 'text 2' }, + ]; + const dataSource = { + reshapeOnPush: true, + store: new (window as any).DevExpress.data.CustomStore({ + key: 'id', + loadMode: 'raw', + load: () => Promise.resolve(data), + }), + }; + + return { + dataSource, + showBorders: true, + scrolling: { + mode: 'infinite', + }, + height: 300, + }; + }); +}); diff --git a/packages/devextreme/js/__internal/grids/grid_core/virtual_scrolling/m_virtual_scrolling.ts b/packages/devextreme/js/__internal/grids/grid_core/virtual_scrolling/m_virtual_scrolling.ts index fdbe2605c990..e4253eea2839 100644 --- a/packages/devextreme/js/__internal/grids/grid_core/virtual_scrolling/m_virtual_scrolling.ts +++ b/packages/devextreme/js/__internal/grids/grid_core/virtual_scrolling/m_virtual_scrolling.ts @@ -1613,6 +1613,11 @@ export const rowsView = (Base: ModuleType) => class VirtualScrollingRo .viewportItemSize(rowHeight); if (isVirtualMode(this) || gridCoreUtils.isVirtualRowRendering(this)) { + const isEmptyRows = this._dataController.isEmpty(); + if (isEmptyRows) { + return; + } + if (!isRender) { this._updateContentItemSizes(); }