本帖最后由 eat_grape_5 于 2024-6-27 10:07 编辑
找到一个可行的方法,即控制绘制次数。当表单发生变化时SpreadJS自动刷新,在这样的机制下,当您批量设置报表单元格时,每设置一个都将刷新一次,可在设置前后合理利用挂起绘制与恢复绘制,能够节省一定时间,示例如下:
- // 报表模板,spread为当前工作簿
- var templateSheet = spread.getSheetTab(0).getTemplateSheet();
- function setCellAdvanced(rowStart, colStart, rowCount, colCount) {
- spread.suspendPaint();
- spread.suspendEvent();
- for (var i = rowStart; i < rowCount; i++) {
- for (var j = colStart; j < colCount; j++) {
- templateSheet.setTemplateCell(i, j, {
- type: 'List',
- binding: `Orders[orderId]`,
- autoExpand: 'Vertical',
- spillMode: 'Overwrite',
- spillDirection: 'Vertical',
- });
- }
- }
- spread.resumeEvent();
- spread.resumePaint();
- }
复制代码
关于挂起绘制与恢复绘制对性能的优化可详细参考官方demo:https://demo.grapecity.com.cn/spreadjs/help/docs/BestPractices/UsingsuspendPaintandresumePaint
|