canvas-datagrid
https://github.com/TonyGermaneri/canvas-datagrid
Ways to create a grid
https://github.com/TonyGermaneri/canvas-datagrid/blob/master/tutorials/canvasDatagrid.md
canvas-datagrid documentation
https://tonygermaneri.github.io/canvas-datagrid/docs/
canvas-datagrid demo
https://tonygermaneri.github.io/canvas-datagrid/tutorials/demo.html
canvas-datagrid為通過Javascript所開發的表格套件,主要特點為使用canvas方式呈現,因不使用標籤式開發,故渲染大數據時效能會較佳。當前版本的缺點為表格功能相較於一些知名套件如ag-grid或handsontable等稍少,並且bug修復較慢,而文件檔說明雖多,但沒有進行一般與進階使用的整理與提供範例,開發上不太方便。
以下為單html檔測試範例︰
載入後畫面為︰
#canvas-datagrid, Javascript, canvas
https://github.com/TonyGermaneri/canvas-datagrid
Ways to create a grid
https://github.com/TonyGermaneri/canvas-datagrid/blob/master/tutorials/canvasDatagrid.md
canvas-datagrid documentation
https://tonygermaneri.github.io/canvas-datagrid/docs/
canvas-datagrid demo
https://tonygermaneri.github.io/canvas-datagrid/tutorials/demo.html
canvas-datagrid為通過Javascript所開發的表格套件,主要特點為使用canvas方式呈現,因不使用標籤式開發,故渲染大數據時效能會較佳。當前版本的缺點為表格功能相較於一些知名套件如ag-grid或handsontable等稍少,並且bug修復較慢,而文件檔說明雖多,但沒有進行一般與進階使用的整理與提供範例,開發上不太方便。
以下為單html檔測試範例︰
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <title>Canvas-datagrid Demo</title> <!--使用lodash--> <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script> <!--使用canvas-datagrid--> <script src="https://tonygermaneri.github.io/canvas-datagrid/dist/canvas-datagrid.debug.js"></script> </head> <body style="margin:0; padding:0;"> <div id="grid" style="width:1400px; height:600px;"></div> <script type="text/javascript"> //產生欄位名稱 let cs = _.map(_.range(1, 11), function (k) { return 'v' + k; }); //產生測試資料 let data = _.map(_.range(1, 1001), function (k) { let r = { id: k, }; _.each(cs, function (c) { r[c] = _.random(0, 100, true); }); return r; }); //grid, canvas-datagrid初始化物件 let grid = canvasDatagrid({ parentNode: document.getElementById('grid'), borderDragBehavior: 'move', allowMovingSelection: true, columnHeaderClickBehavior: 'select', allowFreezingRows: true, allowFreezingColumns: true, allowRowReordering: true, tree: false, debug: false, showPerformance: false, editable: true, multiLine: true, data: data, }); //設定寬高 grid.style.height = '100%'; grid.style.width = '100%'; //監聽編輯事件 grid.addEventListener('beforeendedit', function (e) { console.log('e.cell', e.cell) console.log('e.cell.header', e.cell.header) console.log('e.cell.rowIndex', e.cell.rowIndex) console.log('e.oldValue', e.oldValue) console.log('e.newValue', e.newValue) //因目前版本無法針對各欄位指定是否能編輯,故得要由編輯事件處理 //因無法複製貼上多儲存格值,故不考慮多值變更情形 }); //若封裝成組件,記得解除監聽事件 //grid.removeEventListener('beforeendedit'); </script> </body> </html>
載入後畫面為︰
#canvas-datagrid, Javascript, canvas
留言
張貼留言