Skip to content

Commit b4ac133

Browse files
Add React implementation in v24.2.5
1 parent e4ff36b commit b4ac133

File tree

4 files changed

+110
-17
lines changed

4 files changed

+110
-17
lines changed

React/package-lock.json

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

React/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
"@types/node": "^16.18.11",
1111
"@types/react": "^18.0.27",
1212
"@types/react-dom": "^18.0.10",
13-
"devextreme": "24.2.3",
14-
"devextreme-react": "24.2.3",
13+
"devextreme": "24.2.5",
14+
"devextreme-react": "24.2.5",
1515
"react": "^18.2.0",
1616
"react-dom": "^18.2.0",
1717
"react-scripts": "5.0.1",

React/src/App.tsx

Lines changed: 56 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,64 @@
1-
import React, { useCallback, useState } from 'react';
1+
import React, { useCallback } from 'react';
22
import './App.css';
33
import 'devextreme/dist/css/dx.material.blue.light.compact.css';
4-
import Button from 'devextreme-react/button';
4+
import DataGrid, {
5+
Column, Paging, Pager, Editing,
6+
} from 'devextreme-react/data-grid';
7+
import { employees } from './data';
8+
9+
const allowedPageSizes = [5, 10, 20];
510

611
function App(): JSX.Element {
7-
var [count, setCount] = useState<number>(0);
8-
const clickHandler = useCallback(() => {
9-
setCount((prev) => prev + 1);
10-
}, [setCount]);
12+
const onContextMenuPreparing = useCallback((e: any): void => {
13+
if (e.row.rowType === 'data') {
14+
e.items = [
15+
{
16+
text: 'edit',
17+
onItemClick(): void {
18+
e.component.editRow(e.row.rowIndex);
19+
},
20+
},
21+
{
22+
text: 'insert',
23+
onItemClick(): void {
24+
e.component.addRow();
25+
},
26+
},
27+
{
28+
text: 'delete',
29+
onItemClick(): void {
30+
e.component.deleteRow(e.row.rowIndex);
31+
},
32+
},
33+
];
34+
}
35+
}, []);
1136
return (
12-
<div className="main">
13-
<Button text={`Click count: ${count}`} onClick={clickHandler} />
37+
<div>
38+
<DataGrid
39+
id="gridContainer"
40+
dataSource={employees}
41+
keyExpr="ID"
42+
onContextMenuPreparing={onContextMenuPreparing}
43+
>
44+
<Column dataField="FirstName" />
45+
<Column dataField="LastName" />
46+
<Column dataField="Title" />
47+
<Column dataField="City" />
48+
<Column dataField="Country" />
49+
50+
<Paging pageSize={10} />
51+
<Pager
52+
visible={true}
53+
allowedPageSizes={allowedPageSizes}
54+
showPageSizeSelector={true} />
55+
56+
<Editing
57+
mode="row"
58+
allowUpdating={true}
59+
allowDeleting={true}
60+
allowAdding={true} />
61+
</DataGrid>
1462
</div>
1563
);
1664
}

React/src/data.tsx

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
export interface Employee {
2+
ID: number;
3+
FirstName: string;
4+
LastName: string;
5+
City: string;
6+
}
7+
8+
export const employees = [
9+
{
10+
ID: 1,
11+
FirstName: 'John',
12+
LastName: 'Heart',
13+
City: 'Los Angeles',
14+
},
15+
{
16+
ID: 2,
17+
FirstName: 'Olivia',
18+
LastName: 'Peyton',
19+
City: 'Los Angeles',
20+
},
21+
{
22+
ID: 3,
23+
FirstName: 'Robert',
24+
LastName: 'Reagan',
25+
City: 'Bentonville',
26+
},
27+
{
28+
ID: 4,
29+
FirstName: 'Greta',
30+
LastName: 'Sims',
31+
City: 'Atlanta',
32+
},
33+
{
34+
ID: 5,
35+
FirstName: 'Brett',
36+
LastName: 'Wade',
37+
City: 'Reno',
38+
},
39+
{
40+
ID: 6,
41+
FirstName: 'Sandra',
42+
LastName: 'Johnson',
43+
City: 'Miami',
44+
},
45+
];

0 commit comments

Comments
 (0)