Skip to content

Commit 6cb734e

Browse files
authored
DataGrid - "Cannot read properties of undefined (reading 'values')" error occurs on adding a row to the second page if initial row values are specified in onInitNewRow (T1274123) (DevExpress#29133)
1 parent 5842726 commit 6cb734e

File tree

2 files changed

+45
-0
lines changed
  • e2e/testcafe-devextreme/tests/dataGrid/editing
  • packages/devextreme/js/__internal/grids/grid_core/editing

2 files changed

+45
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/* eslint-disable @typescript-eslint/no-misused-promises */
2+
import DataGrid from 'devextreme-testcafe-models/dataGrid';
3+
import { createWidget } from '../../../helpers/createWidget';
4+
import url from '../../../helpers/getPageUrl';
5+
6+
fixture`initNewRow`
7+
.page(url(__dirname, '../../container.html'));
8+
9+
// T1274123
10+
test('No errors should be thrown if inserting new row after cancelling insert on second page', async (t) => {
11+
const dataGrid = new DataGrid('#container');
12+
13+
await t
14+
.click(
15+
dataGrid.getHeaderPanel().getAddRowButton(),
16+
)
17+
.click(
18+
dataGrid.getPopupEditForm().cancelButton,
19+
);
20+
21+
await t.click(
22+
dataGrid.getHeaderPanel().getAddRowButton(),
23+
);
24+
25+
await t.expect(
26+
dataGrid.getPopupEditForm().element.exists,
27+
).ok();
28+
}).before(async () => {
29+
await createWidget('dxDataGrid', {
30+
dataSource: [...new Array(40)].map((_, index) => ({ id: index + 1, text: `item ${index + 1}` })),
31+
keyExpr: 'id',
32+
paging: {
33+
pageIndex: 1,
34+
},
35+
columns: ['id', 'text'],
36+
showBorders: true,
37+
editing: { mode: 'popup', allowAdding: true },
38+
onInitNewRow(e) {
39+
e.data.id = 0;
40+
e.data.text = 'test';
41+
},
42+
height: 300,
43+
});
44+
});

packages/devextreme/js/__internal/grids/grid_core/editing/m_editing.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,7 @@ class EditingControllerImpl extends modules.ViewController {
270270
const needReset = changes?.length;
271271
if (needReset) {
272272
this._silentOption(EDITING_CHANGES_OPTION_NAME, []);
273+
this._internalState.clear();
273274
}
274275
}
275276

0 commit comments

Comments
 (0)