Events
JavaScript events are the perfect way to integrate the spreadsheet with your applications. There are three ways to handler those events, such as:
- The global data grid event dispatcher method;
- Implementing methods for individual events such as onchange, onclick, etc;
- Implementing the onevent method inside a spreadsheet plugin.
In this section, we provide more details about the first two methods. If you are interested in the events inside plugins, please visit the plugin's documentation.
Specific Event Handlers
There are several specific event handlers available in Jspreadsheet as shown below:
| Event | description |
|---|---|
| onload | onload(spreadsheet: Object) => voidThis method is called when the data in the spreadsheet is ready. |
| onclick | onclick(worksheet: Object, section: String, x: Number, y: Number) => voidWhen the spreadsheet is clicked. Sections: nested | header | row | cell | selectall | tabs | cloning | toolbar | footer |
| onundo | onundo(worksheet: Object, historyRecord: Object) => voidWhen undo is applied |
| onredo | onredo(worksheet: Object, historyRecord: Object) => voidWhen redo is applied |
| onbeforesave | onbeforesave(spreadsheet: Object, worksheet: Object, data: Object) => Boolean | ObjectBefore any data is sent to the backend. Can be used to overwrite the data or to cancel the action when return false. |
| onsave | onsave(spreadsheet: Object, worksheet: Object, data: Object) => voidAfter the data is sent to the server. |
| onbeforechange | onbeforechange(worksheet: Object, cell: DOMElement, x: Number, y: Number, value: Any) => Boolean | AnyBefore a column value is changed. NOTE: It is possible to overwrite the original value, by returning a new value on this method. v3.4.0+ |
| onchange | onchage(worksheet: Object, cell: DOMElement, x: Number, y: Number, newValue: Any, oldValue: Any) => voidAfter a column value is changed. |
| onafterchanges | onafterchanges(worksheet: Object, records: Array)After all changes are applied in the table. |
| oncopy | oncopy(worksheet: Object, selectedCells: Array, data: String) => StringWhen a copy is performed in the spreadsheet. Any string returned will overwrite the user data or return null to progress with the default behavior. |
| onbeforepaste | onbeforepaste(worksheet: Object, data: Array, x: Number, y: Number, style: Array, processedData: String) => boolean | ArrayBefore the paste action is performed. Can return parsed or filtered data, can cancel the action when return false. |
| onpaste | onpaste(worksheet: Object, data: Array) => voidAfter a paste action is performed in the spreadsheet. |
| onbeforeinsertrow | onbeforeinsertrow(worksheet: Object, rowNumber: Number, numOfRows: Number, insertBefore: Boolean) => boolean | voidBefore a new row is inserted. You can cancel the insert event by returning false. |
| oninsertrow | oninsertrow(worksheet: Object, rowNumber: Number, numOfRows: Number, records: Array, insertBefore: Boolean) => voidAfter a new row is inserted. |
| onbeforedeleterow | onbeforedeleterow(worksheet: Object, rowNumber: Number, numOfRows: Number) => boolean | voidBefore a row is deleted. You can cancel the delete event by returning false. |
| ondeleterow | ondeleterow(worksheet: Object, rowNumber: Number, numOfRows: Number, rowDOMElements: Array, rowData: Array, cellAttributes: Array) => voidAfter a row is deleted. |
| onbeforeinsertcolumn | onbeforeinsertcolumn(worksheet: Object, columnNumber: Number, numOfColumns: Number, insertBefore: Boolean) => boolean | voidBefore a new column is inserted. You can cancel the insert event by returning false. |
| oninsertcolumn | oninsertcolumn(worksheet: Object, columnNumber: Number, numOfColumns: Number, historyRecords: Array, insertBefore: Boolean) => voidAfter a new column is inserted. |
| onbeforedeletecolumn | onbeforedeletecolumn(worksheet: Object, columnNumber: Number, numOfColumns: Number) => Boolean | voidBefore a column is excluded. You can cancel the insert event by returning false. |
| ondeletecolumn | ondeletecolumn(worksheet: Object, columnNumber: Number, numOfColumns: Number, affectedDOMElements: Array, historyProperties: Array, cellAttributes: Array) => voidAfter a column is excluded. |
| onmoverow | onmoverow(worksheet: Object, origin: Number, destination: Number) => void;After a row is moved to a new position. |
| onmovecolumn | onmovecolumn(worksheet: Object, origin: Number, destination: Number) => voidAfter a column is moved to a new position. |
| onresizerow | onresizerow(worksheet: Object, row: Mixed, height: Mixed, oldHeight: Mixed) => voidAfter a height change for one or more rows. |
| onresizecolumn | onresizecolumn(worksheet: Object, column: Mixed, width: Mixed, oldWidth: Mixed) => voidAfter a column width change for one or more columns. |
| onselection | onselection(worksheet: Object, px: Number, py: Number, ux: Number, uy: Number, origin?: Object) => voidWhen the selection is changed. |
| onbeforecomments | onbeforecomments(worksheet: Object, newValues: Object) => Boolean | voidBefore a new comment is added or updated. Return false to cancel the event. |
| oncomments | oncomments(worksheet: Object, cells: Object, oldValues: Object) => voidAfter a new comment is added or updated. |
| onbeforesort | onbeforesort(worksheet: Object, column: Number, direction: Number, newOrderValues: Array) => AnyIt runs before sorting a column. It should return an array with a custom sorting or false to cancel the user action. |
| onsort | onsort(worksheet: Object, column: Number, direction: Number, newOrderValues: Array) => voidWhen a column is sorted. |
| onfocus | onfocus(worksheet: Object) => voidWhen the spreadsheet gets the focus. |
| onblur | onblur(worksheet: Object) => voidWhen the spreadsheet loses the focus. |
| onmerge | onmerge(worksheet: Object, newValue: Object, oldValue: Object) => voidWhen merge cells is executed. |
| onchangeheader | onchangeheader(worksheet: Object, column: Number, newValue: String, oldValue: String) => voidWhen the header title is changed. |
| onchangefooter | onchangefooter(worksheet: Object, newValue: [], oldValue: []) => voidWhen the footers are created or updated. |
| onchangefootervalue | onchangefootervalue(worksheet: Object, x: Number, y: Number, value: String) => voidWhen the value in a cell footer is changed. |
| onchangenested | onchangenested(worksheet: Object, options: object) => voidWhen updating the nested headers |
| onchangenestedcell | onchangenestedcell(worksheet: Object, x: Number, y: Number, properties: Object) => voidWhen updating a nested cell |
| oncreateeditor | oncreateeditor(worksheet: Object, cell: DOMElement, x: Number, y: Number, element: DOMElement, options: Object) => voidWhen an editor is created. |
| oneditionstart | oneditionstart(worksheet: Object, cell: DOMElement, x: Number, y: Number) => voidWhen the editor is opened. |
| oneditionend | oneditionend(worksheet: Object, cell: DOMElement, x: Number, y: Number, newValue: Any, save: Boolean) => voidWhen the editor is closed. |
| onchangestyle | onchangestyle(worksheet: Object, newValue: Object, oldValue: Object) => voidWhen the style of a cell is changed. |
| onchangemeta | onchangemeta(worksheet: Object, newValue: Object) => voidWhen cell meta information is added or updated. |
| onbeforechangepage | onbeforechangepage(worksheet: Object, pageNumber: Number, oldPage: Number, quantityPerPage: Number) => Boolean | voidBefore the page is changed. Can cancel the action by returning false. |
| onchangepage | onchangepage(worksheet: Object, pageNumber: Number, oldPageNumber: Number, quantityPerPage: Number) => voidWhen pagination is enabled and the user changes the page. |
| onbeforecreateworksheet | onbeforecreateworksheet(worksheetOptions: Object, position: Number) => boolean | AnyAdd or change the options for a new worksheet. |
| oncreateworksheet | oncreateworksheet(worksheet: Object, worksheetOptions: Object, position: Number) => voidWhen the user creates a new worksheet. |
| onrenameworksheet | onrenameworksheet(worksheet: Object, position: Number, newValue: String, oldValue: String) => voidWhen the user renames a worksheet. |
| ondeleteworksheet | ondeleteworksheet(worksheet: Object, position: Number) => voidWhen the user deletes a worksheet. |
| onmoveworksheet | onmoveworksheet(worksheet: Object, from: Number, to: Number) => voidWhen the user updates the worksheet tab position. |
| onopenworksheet | onopenworksheet(worksheet: Object, worksheet: Number) => voidWhen the user opens a worksheet. |
| onchangerowid | onchangerowid(worksheet: Object, rows: Array) => voidWhen there is a row id update. |
| onbeforesearch | onbeforesearch(worksheet: Object, query: String, results: Array) => Array | boolean | voidAction to be executed before searching. The accepted method return would be: null to continue with the default behavior, false to cancel the user action or an array with the row numbers to overwrite the default result. |
| onsearch | onsearch(worksheet: Object, query: String, results: Array) => voidAfter the search is applied to the rows. |
| onbeforefilter | onbeforefilter(worksheet: Object, filters: Array, data: Array) => voidAction to be executed before filtering rows. It can cancel the action by returning false. |
| onfilter | onfilter(worksheet: Object, filters: Array, data: Array) => voidAfter the filter has been applied to the rows. |
| oncreatecell | oncreatecell(worksheet: Object, element: HTMLElement, x: Number, y: Number, value: String) => voidWhen a new cell is created. |
| oncreaterow | oncreaterow(worksheet: Object, rowNumber: Number, tr: HTMLElement) => voidAfter a new row is inserted. |
| onbeforeformula | onbeforeformula(worksheet: Object, expression: String, x: Number, y: Number) => void | string | booleanBefore executing a formula. |
| onformulachain | onformulachain(worksheet: Object, expressions: Array) => voidGet the information about the expressions executed from the formula chain. |
| onopenfilter | onopenfilter(worksheet: Object, column: number, options: Array) => options | voidCustomize the items available when the filter editor is open. |
Special Data Grid Events
| Event | description |
|---|---|
| contextmenu | contextmenu(worksheet: Object, x: Number, y: Number, e: Event, section: String, section_argument1?: Any, section_argument2?: Any) => Array | booleanReturn false to cancel the contextMenu event, or return custom elements for the contextmenu. |
| updateTable | updateTable(worksheet: Object, cell: Object, x: Number, y: Number, value: String) => voidRun every single table update action. Can bring performance issues if performing too much changes. |
The Data Grid Event dispatcher
The data grid event dispatcher is a global-centralized method to handle all events. The number of arguments depends on the event triggered. NOTE: You can see events in the browser console.
<html>
<script src="https://jspreadsheet.com/v8/jspreadsheet.js"></script>
<script src="https://jsuites.net/v5/jsuites.js"></script>
<link rel="stylesheet" href="https://jspreadsheet.com/v8/jspreadsheet.css" type="text/css" />
<link rel="stylesheet" href="https://jsuites.net/v5/jsuites.css" type="text/css" />
<div id='spreadsheet'></div>
<script>
let data = [
['Mazda', 2001, 2000],
['Peugeot', 2010, 5000],
['Honda Fit', 2009, 3000],
['Honda CRV', 2010, 6000],
];
jspreadsheet(document.getElementById('spreadsheet'), {
worksheets: [{
data: [
['Mazda', 2001, 2000],
['Peugeot', 2010, 5000],
['Honda Fit', 2009, 3000],
['Honda CRV', 2010, 6000],
],
columns:[
{ title:'Model', width:'300px' },
{ title:'Price', width:'80px' },
{ title:'Model', width:'100px' },
],
}],
onevent: function(event,a,b,c,d,e,f) {
console.log(event,a,b,c,d,e,f);
}
});
</script>
</html>