<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ZingGrid: Blank Grid</title> <script nonce="undefined" src="https://cdn.zinggrid.com/dev/zinggrid-dev.min.js"></script> <style> body { background: #e6e6e6; } zing-grid[loading] { height: 288px; } </style> </head> <body> <!-- Most features can be toggled on the toplevel zing-grid tag --> <zing-grid caption="Custom Card Renderer" columns-control filter layout="card" layout-controls pager page-size="4" page-size-options="2,4,8,16" viewport-stop> <!-- dataset --> <zg-data data='[ { "breed": "Cane Corso", "name": "Ziva"}, { "breed": "Pug", "name": "Doug"}, { "breed": "Corgi", "name": "Jenny"}, { "breed": "Pomeranian", "name": "Koda"}, { "breed": "Great Dane", "name": "Zeus"}, { "breed": "Frenchie", "name": "Bruce"}, { "breed": "Cane Corso", "name": "Sofia"}, { "breed": "Pomeranian", "name": "Snowball"} ]'></zg-data> <!-- define custom card mode --> <zg-card renderer="cardRenderer"> <div> <h2>[[record.breed]]</h2> <span>Name: [[record.name]]</span> <hr> <select> <option value="" disabled selected>Please Choose One</option> </select> </div> </zg-card> </zing-grid> <script> ZingGrid.setLicense(['26ccbfec16b8be9ee98c7d57bee6e498']); // define custom card renderer and assign content // and event listeners inside function function cardRenderer(record, cellDOMRef, cellRef) { const dogBreeds = [ 'Cane Corso', 'Pug', 'Corgi', 'Pomeranian', 'Great Dane', 'Frenchie', ]; // get reference to select dropdown const selectDropdown = cellDOMRef.querySelector('select'); // sort breeds and populate select dropdown dogBreeds.sort().forEach(breed => { const breedOption = document.createElement('option'); breedOption.textContent = breed; breedOption.value = breed; selectDropdown.appendChild(breedOption); }); // add events in renderer as well selectDropdown.addEventListener('change', (e) => { const newType = e.target.value; alert(`Select dropdown changed to: ${newType}`); }); } </script> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ZingGrid: Blank Grid</title> <script src="https://cdn.zinggrid.com/dev/zinggrid-dev.min.js"></script> </head> <body> <!-- Most features can be toggled on the toplevel zing-grid tag --> <zing-grid caption="Custom Card Renderer" columns-control filter layout="card" layout-controls pager page-size="4" page-size-options="2,4,8,16" viewport-stop> <!-- dataset --> <zg-data data='[ { "breed": "Cane Corso", "name": "Ziva"}, { "breed": "Pug", "name": "Doug"}, { "breed": "Corgi", "name": "Jenny"}, { "breed": "Pomeranian", "name": "Koda"}, { "breed": "Great Dane", "name": "Zeus"}, { "breed": "Frenchie", "name": "Bruce"}, { "breed": "Cane Corso", "name": "Sofia"}, { "breed": "Pomeranian", "name": "Snowball"} ]'></zg-data> <!-- define custom card mode --> <zg-card renderer="cardRenderer"> <div> <h2>[[record.breed]]</h2> <span>Name: [[record.name]]</span> <hr> <select> <option value="" disabled selected>Please Choose One</option> </select> </div> </zg-card> </zing-grid> </body> </html>
body { background: #e6e6e6; }
// define custom card renderer and assign content // and event listeners inside function function cardRenderer(record, cellDOMRef, cellRef) { const dogBreeds = [ 'Cane Corso', 'Pug', 'Corgi', 'Pomeranian', 'Great Dane', 'Frenchie', ]; // get reference to select dropdown const selectDropdown = cellDOMRef.querySelector('select'); // sort breeds and populate select dropdown dogBreeds.sort().forEach(breed => { const breedOption = document.createElement('option'); breedOption.textContent = breed; breedOption.value = breed; selectDropdown.appendChild(breedOption); }); // add events in renderer as well selectDropdown.addEventListener('change', (e) => { const newType = e.target.value; alert(`Select dropdown changed to: ${newType}`); }); }