UNPKG

jqwidgets-scripts-custom

Version:

jQWidgets is an advanced jQuery, Angular 7, Vue, React, ASP .NET MVC, Custom Elements and HTML5 UI framework.

179 lines (169 loc) 8.55 kB
import React from 'react'; import ReactDOM from 'react-dom'; import JqxGrid from '../../../jqwidgets-react/react_jqxgrid.js'; class App extends React.Component { componentDidMount() { this.refs.myGrid.on('cellselect', (event) => { let column = this.refs.myGrid.getcolumn(event.args.datafield); let value = this.refs.myGrid.getcellvalue(event.args.rowindex, column.datafield); let displayValue = this.refs.myGrid.getcellvalue(event.args.rowindex, column.displayfield); let container = document.getElementById('eventLog'); container.innerHTML = '<div>Selected Cell<br/>Row: ' + event.args.rowindex + ', Column: ' + column.text + ', Value: ' + value + ', Label: ' + displayValue + '</div>'; }); this.refs.myGrid.on('cellendedit', (event) => { let column = this.refs.myGrid.getcolumn(event.args.datafield); let container = document.getElementById('eventLog'); if (column.displayfield != column.datafield) { container.innerHTML = '<div>Cell Edited:<br/>Index: ' + event.args.rowindex + ', Column: ' + column.text + '<br/>Value: ' + event.args.value.value + ', Label: ' + event.args.value.label + '<br/>Old Value: ' + event.args.oldvalue.value + ', Old Label: ' + event.args.oldvalue.label + '</div>'; } else { container.innerHTML = '<div>Cell Edited:<br/>Row: ' + event.args.rowindex + ', Column: ' + column.text + '<br/>Value: ' + event.args.value + '<br/>Old Value: ' + event.args.oldvalue + '</div>'; } }); } render() { let countries = [ { value: 'AF', label: 'Afghanistan' }, { value: 'AL', label: 'Albania' }, { value: 'DZ', label: 'Algeria' }, { value: 'AR', label: 'Argentina' }, { value: 'AM', label: 'Armenia' }, { value: 'AU', label: 'Australia' }, { value: 'AT', label: 'Austria' }, { value: 'AZ', label: 'Azerbaijan' }, { value: 'BS', label: 'Bahamas' }, { value: 'BH', label: 'Bahrain' }, { value: 'BD', label: 'Bangladesh' }, { value: 'BB', label: 'Barbados' }, { value: 'BY', label: 'Belarus' }, { value: 'BE', label: 'Belgium' }, { value: 'BZ', label: 'Belize' }, { value: 'BJ', label: 'Benin' }, { value: 'BM', label: 'Bermuda' }, { value: 'BR', label: 'Brazil' }, { value: 'BN', label: 'Brunei' }, { value: 'BG', label: 'Bulgaria' }, { value: 'CM', label: 'Cameroon' }, { value: 'CA', label: 'Canada' }, { value: 'CL', label: 'Chile' }, { value: 'CN', label: 'China' }, { value: 'CO', label: 'Columbia' }, { value: 'CR', label: 'Costa Rica' }, { value: 'HR', label: 'Croatia (Hrvatska)' }, { value: 'CU', label: 'Cuba' }, { value: 'CY', label: 'Cyprus' }, { value: 'CZ', label: 'Czech Republic' }, { value: 'DK', label: 'Denmark' }, { value: 'TP', label: 'East Timor' }, { value: 'EC', label: 'Ecuador' }, { value: 'EG', label: 'Egypt' }, { value: 'ER', label: 'Eritrea' }, { value: 'EE', label: 'Estonia' }, { value: 'ET', label: 'Ethiopia' }, { value: 'FI', label: 'Finland' }, { value: 'FR', label: 'France' }, { value: 'DE', label: 'Germany' }, { value: 'GR', label: 'Greece' }, { value: 'HK', label: 'Hong Kong' }, { value: 'HU', label: 'Hungary' }, { value: 'IS', label: 'Iceland' }, { value: 'IN', label: 'India' }, { value: 'ID', label: 'Indonesia' }, { value: 'IR', label: 'Iran' }, { value: 'IQ', label: 'Iraq' }, { value: 'IE', label: 'Ireland' }, { value: 'IL', label: 'Israel' }, { value: 'IT', label: 'Italy' }, { value: 'JM', label: 'Jamaica' }, { value: 'JP', label: 'Japan' }, { value: 'MX', label: 'Mexico' }, { value: 'MC', label: 'Monaco' }, { value: 'MA', label: 'Morocco' }, { value: 'NL', label: 'Netherlands' }, { value: 'NZ', label: 'New Zealand' }, { value: 'NE', label: 'Niger' }, { value: 'NG', label: 'Nigeria' }, { value: 'KP', label: 'North Korea' }, { value: 'NO', label: 'Norway' }, { value: 'PA', label: 'Panama' }, { value: 'PE', label: 'Peru' }, { value: 'PH', label: 'Philippines' }, { value: 'PL', label: 'Poland' }, { value: 'PT', label: 'Portugal' }, { value: 'RO', label: 'Romania' }, { value: 'RU', label: 'Russia' }, { value: 'SA', label: 'Saudi Arabia' }, { value: 'SK', label: 'Slovak Republic' }, { value: 'SI', label: 'Slovenia' }, { value: 'ZA', label: 'South Africa' }, { value: 'KR', label: 'South Korea' }, { value: 'ES', label: 'Spain' }, { value: 'SE', label: 'Sweden' }, { value: 'CH', label: 'Switzerland' }, { value: 'TN', label: 'Tunisia' }, { value: 'TR', label: 'Turkey' }, { value: 'UA', label: 'Ukraine' }, { value: 'AE', label: 'United Arab Emirates' }, { value: 'UK', label: 'United Kingdom' }, { value: 'US', label: 'United States' } ]; let countriesSource = { datatype: 'array', datafields: [ { name: 'label', type: 'string' }, { name: 'value', type: 'string' } ], localdata: countries }; let countriesAdapter = new $.jqx.dataAdapter(countriesSource, { autoBind: true }); let gridSource = { datatype: 'array', localdata: [ { countryCode: 'UK' }, { countryCode: 'US' }, { countryCode: 'DE' }, { countryCode: 'FR' }, { countryCode: 'IN' }, { countryCode: 'HK' } ], datafields: [ // name - determines the field's name. // value - the field's value in the data source. // values - specifies the field's values. // values.source - specifies the foreign source. The expected value is an array. // values.value - specifies the field's value in the foreign source. // values.name - specifies the field's name in the foreign source. // When the adapter is loaded, each record will have a field called 'Country'. The 'Country' for each record comes from the countriesAdapter where the record's 'countryCode' from gridAdapter matches to the 'value' from countriesAdapter. { name: 'Country', value: 'countryCode', values: { source: countriesAdapter.records, value: 'value', name: 'label' } }, { name: 'countryCode', type: 'string' } ] }; let gridAdapter = new $.jqx.dataAdapter(gridSource); let columns = [ { text: 'Country', datafield: 'countryCode', displayfield: 'Country', columntype: 'combobox', createeditor: (row, value, editor) => { editor.jqxComboBox({ source: countriesAdapter, displayMember: 'label', valueMember: 'value' }); } } ]; return ( <div> <JqxGrid ref='myGrid' width={600} source={gridAdapter} selectionmode={'singlecell'} autoheight={true} editable={true} columns={columns} /> <div id='eventLog' style={{ fontSize: 13, marginTop: 20, fontFamily: 'Verdana' }} /> </div> ) } } ReactDOM.render(<App />, document.getElementById('app'));