UNPKG

jqwidgets-scripts-custom

Version:

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

129 lines (116 loc) 6.97 kB
<!DOCTYPE html> <html lang="en"> <head> <title id='Description'>Grid Custom Element Keys/ValuesColumn</title> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> <meta name="viewport" content="width=device-width, initial-scale=1 maximum-scale=1 minimum-scale=1" /> <meta name="description" content="This is an example of Custom Element Grid with two fileds: cell values and cell labels." /> <link rel="stylesheet" href="../../../jqwidgets/styles/jqx.base.css" type="text/css" /> <link rel="stylesheet" href="../../../styles/demos.css" type="text/css" /> <script type="text/javascript" src="../../../scripts/webcomponents-lite.min.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxcore.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxcore.elements.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxdata.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxbuttons.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxscrollbar.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxmenu.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxgrid.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxgrid.selection.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxgrid.pager.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxlistbox.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxgrid.edit.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxdropdownlist.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxcombobox.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxpanel.js"></script> <script type="text/javascript" src="../../../scripts/demos.js"></script> <script type="text/javascript"> var employeesSource = { datatype: 'xml', datafields: [ { name: 'FirstName', type: 'string' }, { name: 'LastName', type: 'string' } ], root: 'Employees', record: 'Employee', id: 'EmployeeID', url: '../../sampledata/employees.xml', async: false }; var employeesAdapter = new jqx.dataAdapter(employeesSource, { autoBind: true, beforeLoadComplete: (records) => { var data = new Array(); for (var i = 0; i < records.length; i++) { var employee = records[i]; employee.EmployeeName = employee.FirstName + ' ' + employee.LastName; employee.EmployeeID = employee.uid; data.push(employee); } return data; } }); var ordersSource = { datatype: 'xml', datafields: [ { name: 'EmployeeName', value: 'EmployeeID', values: { source: employeesAdapter.records, value: 'EmployeeID', name: 'EmployeeName' } }, { name: 'EmployeeID', map: 'm\\:properties>d\\:EmployeeID' }, { name: 'ShippedDate', map: 'm\\:properties>d\\:ShippedDate', type: 'date' }, { name: 'Freight', map: 'm\\:properties>d\\:Freight', type: 'float' }, { name: 'ShipName', map: 'm\\:properties>d\\:ShipName' }, { name: 'ShipAddress', map: 'm\\:properties>d\\:ShipAddress' }, { name: 'ShipCity', map: 'm\\:properties>d\\:ShipCity' }, { name: 'ShipCountry', map: 'm\\:properties>d\\:ShipCountry' } ], root: 'entry', record: 'content', id: 'm\\:properties>d\\:OrderID', url: '../../sampledata/orders.xml' }; var ordersAdapter = new jqx.dataAdapter(ordersSource); JQXElements.settings['gridSettings'] = { source: ordersAdapter, selectionmode: 'singlecell', pageable: true, autoheight: true, editable: true, columns: [ { text: 'Employee Name', datafield: 'EmployeeID', displayfield: 'EmployeeName', columntype: 'dropdownlist', width: 150 }, { text: 'Ship City', datafield: 'ShipCity', width: 150 }, { text: 'Ship Country', datafield: 'ShipCountry', width: 150 }, { text: 'Ship Name', datafield: 'ShipName' } ] }; window.onload = function() { var myGrid = document.querySelector('jqx-grid'); var eventLog = document.querySelector('#eventLog'); myGrid.addEventListener('cellselect', function(event) { var column = myGrid.getcolumn(event.args.datafield); var value = myGrid.getcellvalue(event.args.rowindex, column.datafield); var displayValue = myGrid.getcellvalue(event.args.rowindex, column.displayfield); eventLog.innerHTML = '<div>Selected Cell<br/>Row: ' + event.args.rowindex + ', Column: ' + column.text + ', Value: ' + value + ', Label: ' + displayValue + '</div>'; }); myGrid.addEventListener('cellendedit', function(event) { var column = myGrid.getcolumn(event.args.datafield); if (column.displayfield != column.datafield) { eventLog.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 { eventLog.innerHTML = '<div>Cell Edited:<br/>Row: ' + event.args.rowindex + ', Column: ' + column.text + '<br/>Value: ' + event.args.value + '<br/>Old Value: ' + event.args.oldvalue + '</div>'; } }); }; </script> </head> <body> <div class="example-description"> In this sample is illustrated how to create a Custom element Grid Column with two fields for the cell values and cell labels. Click on a cell in the "Employee Name" column. The cell's label and value will be displayed below the Grid. </div> <jqx-grid settings="gridSettings"></jqx-grid> <div id="eventLog" style="font-size: 13px; margin-top: 20px; font-family: Verdana, Geneva, DejaVu Sans, sans-serif;"></div> </body> </html>