示例说明
为了设计出更美观的报表,我们有时候会需要在电子表格报表中添加 Excel 的“形状”,见下图。
对于添加的“形状”,我们点击它时可以跳转到其它报表,或者在其上绑定其它的处理事件。类似上述需求,皆可以参照如下方法进行设置。
版本及客户端说明
1.smartbi版本:V5.1
2.客户端:PC
3.浏览器:IE11、谷歌浏览器(Chrome)、火狐浏览器(Firefox)
设置方法
1、首先在电子表格设计器(Microsoft Office Excel)中,创建电子表格报表。其中添加了一个形状,并且其名称为"clickme"
2、在浏览器的资源定制节点下,选中电子表格,右键选择 编辑宏 进入报表宏界面。
3、在报表宏界面新建客户端模块。在弹出的新建模块对话框中,选择对象为spreadSheetReport、事件为onRender、并把下面宏代码复制到代码编辑区域。
宏类型
类型 | 对象 | 事件 |
---|---|---|
ClientSide | spreadsheetReport | onRender |
宏代码
function main(spreadsheetReport) { //获取名称为 clickme的形状 var shape = spreadsheetReport.shapesMap["clickme"]; if (shape) { shape.style.cursor = "pointer"; shape.onclick = doShapeButtonClick; } } // "形状"对象的click事件处理函数 function doShapeButtonClick(e) { var paramsInfo = []; openURL("openresource.jsp?resid=I4028818a32e86aa801543804fce10fda&showtoolbar=true&refresh=true", [{ name: "paramsInfo", value: lang.toJSONString(paramsInfo) }]) };
如果需要获取到参数或者报表的其他方法,宏示例如下:
function main(spreadsheetReport) { //获取名称为 clickme的形状 var shape = spreadsheetReport.shapesMap["clickme"]; if (shape) { shape.style.cursor = "pointer"; shape.onclick = doShapeButtonClick; shape.spreadsheetReport = spreadsheetReport; //spreadsheetReport.addListener(shape, "click", doShapeButtonClick, spreadsheetReport); } } // "形状"对象的click事件处理函数 function doShapeButtonClick(e) { var spreadsheetReport = this.spreadsheetReport; var paramsInfo = []; var aa = spreadsheetReport.getParamDisplayValue("开始日期1"); //获取源目标报表的参数值 alert(aa); openURL("openresource.jsp?resid=I4028818a32e86aa801543804fce10fda&showtoolbar=true&refresh=true", [{ name: "paramsInfo", value: lang.toJSONString(paramsInfo) }]) };
关键对象总结
- 通过var shape = spreadsheetReport.shapesMap["clickme"] 方法,获取指定的形状对象。
- 通过设置shape.onclick 方法,为形状对象绑定事件处理函数。
资源下载
报表资源:为形状添加跳转migrate.xml