注意 | ||
---|---|---|
| ||
本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如使用功能不一致,或多个宏代码冲突等),需根据实际需求开发代码。 |
示例说明
我们有时候会想要实现电子表格数据填报时,实现一些特殊的需求。比如增加删除功能,即点击数据列表的“删除”,提示确认后即可以删除这一行的数据。类似上述需求,皆可以参照如下方法进行设置。
...
3、在报表宏界面新建客户端模块。在弹出的新建模块对话框中,,选择对象为spreadSheetReport、事件为onRender、并把下面宏代码复制到代码编辑区域。
宏类型
类型 | 对象 | 事件 |
---|---|---|
ClientSide | spreadsheetReport | onRender |
宏代码
代码块 | ||||
---|---|---|---|---|
| ||||
function main(spreadsheetReport) { var list = spreadsheetReport.getExpandedPositions("B4"); //获取【删除】字样的所有单元格 for (var i = 0; i < list.length; i++) { var pos = spreadsheetReport.parseCellIndex(list[i]); var td = spreadsheetReport.getCell(pos[0], pos[1]); //获取单元格 td.style.cursor = "pointer"; //鼠标变手 td.toDeleteCell = pos[0]; td.onclick = function() { var modalWindow = jsloader.resolve("freequery.common.modalWindow"); //var flag = modalWindow.open("确认删除吗?", "警告", modalWindow.MB_YESNO | modalWindow.MB_ICONQUESTION) == modalWindow.ID_YES; var flag = confirm("确认删除吗?"); if (flag) { //实际上允许删除的单元格,在这个例子中是C4这个单元格,所以使用2作为列,从0 开始数,需要根据实际情况修改 spreadsheetReport.spreadsheetReportWriteBack.currentEditingPosition = this.toDeleteCell + ":2"; //调用删除 spreadsheetReport.spreadsheetReportWriteBack.doRemoveRowClick(); } } } } |
...
4、在报表宏界面新建服务端模块。选择对象为spreadSheetReport、事件为onBeforeOutput、并把下面宏代码复制到代码编辑区域。
宏类型
类型 | 对象 | 事件 |
---|---|---|
ServerSide | spreadsheetReport | onBeforeOutput |
宏代码
代码块 | ||||
---|---|---|---|---|
| ||||
function main(spreadsheetReport) { spreadsheetReport.printExpandedPositions();//输出扩展后的位置 } |
示例资源下载:migrate-示例资源.xml(该资源使用数据集与demo中的清单回写数据集为同一个)