import * as React from 'react'; import { generatedata } from './generatedata'; import JqxButton from 'jqwidgets-scripts/jqwidgets-react-tsx/jqxbuttons'; import JqxDataTable, { IDataTableProps, jqx } from 'jqwidgets-scripts/jqwidgets-react-tsx/jqxdatatable'; import JqxDropDownList, { IDropDownListProps } 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'; export interface IState extends IDataTableProps { pagerModeSelected: IDropDownListProps['selectedIndex']; pagerPositionSelected: IDropDownListProps['selectedIndex']; } class App extends React.PureComponent<{}, IState> { private myDataTable = React.createRef(); private myInput = React.createRef(); private myPanel = React.createRef(); constructor(props: {}) { super(props); this.pagerModeListOnSelect = this.pagerModeListOnSelect.bind(this); this.pagerPositionListOnSelect = this.pagerPositionListOnSelect.bind(this); this.btnOnClick = this.btnOnClick.bind(this); this.tableOnPageChanged = this.tableOnPageChanged.bind(this); this.tableOnPageSizeChanged = this.tableOnPageSizeChanged.bind(this); const source = { dataFields: [ { name: 'firstname', type: 'string' }, { name: 'lastname', type: 'string' }, { name: 'productname', type: 'string' }, { name: 'quantity', type: 'number' }, { name: 'price', type: 'number' }, { name: 'total', type: 'number' } ], dataType: 'array', localData: generatedata(200, false) }; this.state = { columns: [ { text: 'Name', dataField: 'firstname', width: 200 }, { text: 'Last Name', dataField: 'lastname', width: 200 }, { text: 'Product', editable: false, dataField: 'productname', width: 180 }, { text: 'Quantity', dataField: 'quantity', width: 80, cellsAlign: 'right' }, { text: 'Unit Price', dataField: 'price', width: 80, cellsAlign: 'right', cellsFormat: 'c2' }, { text: 'Total', dataField: 'total', cellsAlign: 'right', cellsFormat: 'c2' } ], pagerMode: 'default', pagerModeSelected: 0, pagerPosition: 'both', pagerPositionSelected: 2, source: new jqx.dataAdapter(source) }; } public render() { return (
Settings
Pager Mode:
Pager Position:
Go to Page:
Apply
Event Log:
); } private pagerModeListOnSelect(event: any): void { let newPagerMode: IDataTableProps['pagerMode']; const index = event.args.index; if (index === 0) { newPagerMode = 'default'; } else { newPagerMode = 'advanced'; } this.setState({ pagerMode: newPagerMode, pagerModeSelected: index }); }; private pagerPositionListOnSelect(event: any): void { let newPagerPosition: IDataTableProps['pagerPosition']; const index = event.args.index; if (index === 0) { newPagerPosition = 'top'; } else if (event.args.index === 1) { newPagerPosition = 'bottom'; } else { newPagerPosition = 'both'; } this.setState({ pagerPosition: newPagerPosition, pagerPositionSelected: index }); }; private btnOnClick(): void { let page = parseInt(this.myInput.current!.getOptions('value'), 10); if (!isNaN(page)) { page--; if (page < 0) { page = 0; } this.myDataTable.current!.goToPage(page); } }; private tableOnPageChanged(event: any): void { const count = document.getElementsByClassName('logged'); if (count.length >= 5) { this.myPanel.current!.clearcontent(); } const args = event.args; const eventData = '
Page:' + (1 + args.pagenum) + ', Page Size: ' + args.pageSize + '
'; this.myPanel.current!.prepend('
' + eventData + '
'); }; private tableOnPageSizeChanged(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 + '
'); }; } export default App;