Remote database ids and actions
The following example shows a few important concepts.
- How to load the data with IDS that are not shown to the user;
- How to create custom data grid columns, in this example adding icon with actions;
- Get a new remote id every single row added to the system;
NOTE: the example handles with one new line, but you can interact to get more ids in case more than one rows are added
<html>
<script src="https://jspreadsheet.com/v7/jspreadsheet.js"></script>
<script src="https://jsuites.net/v5/jsuites.js"></script>
<link rel="stylesheet" href="https://jspreadsheet.com/v7/jspreadsheet.css" type="text/css" />
<link rel="stylesheet" href="https://jsuites.net/v5/jsuites.css" type="text/css" />
<div id="spreadsheet"></div>
<script>
let action = function() {
let methods = {};
methods.createCell = function(cell, value, x, y, instance, options) {
let input = document.createElement('i');
input.className = 'material-icons';
input.style.cursor = 'pointer';
input.style.fontSize = '22px';
input.innerHTML = "search";
input.onclick = function() {
let id = instance.getRowId(y);
// Do some action
alert(id);
}
cell.appendChild(input);
}
return methods;
}();
jspreadsheet(document.getElementById('spreadsheet'), {
data: [
{ id:'1', data:['Google', '5', ''] },
{ id:'2', data:['Bing', '4', ''] },
{ id:'3', data:['Yahoo', '1', ''] },
{ id:'4', data:['Duckduckgo', '5', ''] },
],
columns: [
{ type: 'text', width:'400px' },
{ type: 'rating', width:'100px' },
{ type: action, width:'100px', readOnly: true },
],
persistance: '/jspreadsheet/save',
oninsertrow: function(a,b,c,d,e) {
// Inserted before?
let rowNumber = e == false ? b + 1 : b;
// Go in remotely get the id and return to the cell
jSuites.ajax({
url: '/jspreadsheet/id',
method: 'GET',
dataType: 'json',
success: function(result) {
// The new id is
alert('The new row has id: ' + result);
// set row id
a.jexcel.setRowId(rowNumber, result);
}
})
},
license: 'NmFlMjlkYjkyYjk0ZjhkZGE4NmNhNWQ0ZTBkZGY1YmI1MmRhMDQwMzUyZTkzODBmYTE3YmZiZjM4ZmE5YTk0OTJhZjlkNTJkNTJlODAzYzk1YmI3ZWQ3YjExYWNjM2QwMGU4YmViMTg3NjM1YzJiODM3ODFhZmZiMmRhZDA2NTMsZXlKamJHbGxiblJKWkNJNklpSXNJbTVoYldVaU9pSktjM0J5WldGa2MyaGxaWFFpTENKa1lYUmxJam94TnpZd01qWXdNak16TENKa2IyMWhhVzRpT2xzaWFuTndjbVZoWkhOb1pXVjBMbU52YlNJc0ltTnZaR1Z6WVc1a1ltOTRMbWx2SWl3aWFuTm9aV3hzTG01bGRDSXNJbU56WWk1aGNIQWlMQ0p6ZEdGamEySnNhWFI2TG1sdklpd2lkMlZpWTI5dWRHRnBibVZ5TG1sdklpd2liRzlqWVd4b2IzTjBJbDBzSW5Cc1lXNGlPaUl6TkNJc0luTmpiM0JsSWpwYkluWTNJaXdpZGpnaUxDSjJPU0lzSW5ZeE1DSXNJbll4TVNJc0ltTm9ZWEowY3lJc0ltWnZjbTF6SWl3aVptOXliWFZzWVNJc0luQmhjbk5sY2lJc0luSmxibVJsY2lJc0ltTnZiVzFsYm5Seklpd2lhVzF3YjNKMFpYSWlMQ0ppWVhJaUxDSjJZV3hwWkdGMGFXOXVjeUlzSW5ObFlYSmphQ0lzSW5CeWFXNTBJaXdpYzJobFpYUnpJaXdpWTJ4cFpXNTBJaXdpYzJWeWRtVnlJaXdpYzJoaGNHVnpJaXdpWm05eWJXRjBJbDBzSW1SbGJXOGlPblJ5ZFdWOQ==',
});
</script>
</html>