import * as React from 'react'; import { generateordersdata } from './../public/generatedata'; import JqxButton from 'jqwidgets-scripts/jqwidgets-react-tsx/jqxbuttons'; import JqxDropDownList from 'jqwidgets-scripts/jqwidgets-react-tsx/jqxdropdownlist'; import JqxInput from 'jqwidgets-scripts/jqwidgets-react-tsx/jqxinput'; import JqxPanel from 'jqwidgets-scripts/jqwidgets-react-tsx/jqxpanel'; import JqxTreeGrid, { ITreeGridProps, jqx } from 'jqwidgets-scripts/jqwidgets-react-tsx/jqxtreegrid'; class App extends React.PureComponent<{}, ITreeGridProps> { private myTreeGrid = React.createRef(); private myPanel = React.createRef(); private myInput = React.createRef(); private loop: number = 0; constructor(props: {}) { super(props); this.myTreeGridOnPageChanged = this.myTreeGridOnPageChanged.bind(this); this.myTreeGridOnPageSizeChanged = this.myTreeGridOnPageSizeChanged.bind(this); this.pagerModeDropDownListOnSelect = this.pagerModeDropDownListOnSelect.bind(this); this.pagerPositionDropDownListOnSelect = this.pagerPositionDropDownListOnSelect.bind(this); this.btnOnClick = this.btnOnClick.bind(this); const source: any = { dataFields: [ { name: 'name', type: 'string' }, { name: 'quantity', type: 'number' }, { name: 'id', type: 'string' }, { name: 'parentid', type: 'number' }, { name: 'price', type: 'number' }, { name: 'date', type: 'date' }, { name: 'customer', type: 'string' } ], dataType: 'array', hierarchy: { keyDataField: { name: 'id' }, parentDataField: { name: 'parentid' } }, id: 'id', localData: generateordersdata(10) }; const dataAdapter: any = new jqx.dataAdapter(source); this.state = { columns: [ { align: "center", dataField: "name", text: "Order Name", width: 250 }, { align: "center", dataField: "customer", text: "Customer", width: 250 }, { align: "center", cellsAlign: "right", cellsFormat: "c2", dataField: "price", text: "Price", width: 80 }, { align: "center", cellsFormat: "dd-MMMM-yyyy hh:mm", cellsRenderer: (rowKey?: number, column?: any, cellValue?: any, rowData?: any, cellText?: any) => { if (rowData.level === 0) { return dataAdapter.formatDate(cellValue, 'dd-MMMM-yyyy'); } return cellText; }, dataField: "date", text: "Order Date" } ], pagerMode: "advanced", pagerPosition: "both", ready: (): void => { setTimeout(() => { this.myTreeGrid.current!.expandRow(1); }, 0); }, source: dataAdapter } } public render() { const styleDivs: React.CSSProperties = { marginTop: 10 }; return (
Settings
Pager Mode:
Pager Position:
Go to Page:
Apply
Event Log:
); } // Event handling private myTreeGridOnPageChanged(event: any): void { if (this.loop >= 5) { this.myPanel.current!.clearcontent(); this.loop = 0; } this.loop++; const args = event.args; const eventData = "
Page:" + (1 + args.pagenum) + ", Page Size: " + args.pageSize + "
"; this.myPanel.current!.prepend('
' + eventData + '
'); } private myTreeGridOnPageSizeChanged(event: any): void { this.myPanel.current!.clearcontent(); const args = event.args; const eventData = "
Page: " + (1 + args.pagenum) + ", Page Size: " + args.pageSize + ", Old Page Size: " + args.oldpageSize + "
"; this.myPanel.current!.prepend('
' + eventData + '
'); } private pagerModeDropDownListOnSelect(event: any): void { if (event.args.index === 0) { this.myTreeGrid.current!.setOptions({ pagerMode: "default" }); } else { this.myTreeGrid.current!.setOptions({ pagerMode: "advanced" }); } } private pagerPositionDropDownListOnSelect(event: any): void { if (event.args.index === 0) { this.myTreeGrid.current!.setOptions({ pagerPosition: "top" }); } else if (event.args.index === 1) { this.myTreeGrid.current!.setOptions({ pagerPosition: "bottom" }); } else { this.myTreeGrid.current!.setOptions({ pagerPosition: "both" }); } } private btnOnClick(): void { let page = parseInt(this.myInput.current!.getOptions('value'), 10); if (!isNaN(page)) { page--; if (page < 0) { page = 0; } this.myTreeGrid.current!.goToPage(page); } } } export default App;