示例说明
在某特定情况下,需要实现在报表跳转传参时,根据传递的值内容,把值传递到不同的参数中。如从“传参源标报表”报表通过“指标名称”字段带参跳转到“传参目标报表”报表,当“传参源标报表”报表中的“指标名称”的值为“2013-01-01 00:00:00”、“2013-01-03 00:00:00”、时,把值传到“传参目标报表”报表的“销售时间”参数中;否则就传到把值传到“传参目标报表”报表的“地图区域-无初始值”参数中。
当在“传参源标报表”报表点“华北”行数据时跳转到传参目标报表”报表时,付值给“地图区域-无初始值”参数中,如下图:
当在“传参源标报表”报表点“2013-01-01 00:00:00”行数据时跳转到传参目标报表”报表时,付值给“订单时间”参数中,如下图:
设置方法
- 在【资源定制】创建案例类似的页面。
- 选中页面,右键选择 编辑宏 进入报表宏界面,右击【编辑宏】->创建【跳转规则向导】。
- 在双点打开已创建的跳转规则的action,在该界面中进行修改【跳转规则向导】生成宏代码,如下图:
宏类型
类型 | 对象 | 事件 |
ClientSide | simpleReport | onLinkClick |
宏代码
function paramToString(v) { return v == null ? null : v.toString(); } function main(spreadsheetReport, ruleName, params, page, pageContext) { if (ruleName != "跳转") return; var targetResId = "I40288190015b8ab58ab5d18b015b8f1ba4072292"; var newReport = false; //${Locatethecorresponding}dashlet${Object}${Comma}${Andrefreshit}${Period} var dashlet = page.findDashletByReportId(targetResId); //dashlet${Doesnotexist} if(!dashlet) return; var portlet = dashlet.currentPortlet; if(!portlet){return;} if (typeof paramsInfo != "undefined" && paramsInfo) paramsInfo.push({name:"地图区域-无初始值", value:paramToString(params[0]), displayValue:paramToString(params[0])}); var pObj = {value:paramToString(params[0]),displayValue:paramToString(params[0])}; //判断是否是点击了时间 if(pObj.value != "2013-01-01 00:00:00" && pObj.value != "2013-01-03 00:00:00"){ if (typeof portlet != "undefined" && portlet) portlet.fillParamValueFromObj("地图区域-无初始值",pObj); } if (typeof paramsInfo != "undefined" && paramsInfo) paramsInfo.push({name:"订单时间", value:paramToString(params[1]), displayValue:paramToString(params[1])}); var pObj = {value:paramToString(params[1]),displayValue:paramToString(params[1])}; //判断是否点击了时间之外的数据 if(pObj.value == "2013-01-01 00:00:00" || pObj.value == "2013-01-03 00:00:00"){ if (typeof portlet != "undefined" && portlet) portlet.fillParamValueFromObj("订单时间",pObj); } //${Setsthevalueoftheparametertoareportobject} portlet.commitParamValue(); portlet.refreshData(); } //${Createaparameterinformation} function createParamInfo(name, value, disValue,mergeType){ var paramInfo = new Object(); paramInfo.name = name; paramInfo.value = value + ""; paramInfo.displayValue = disValue + ""; if(mergeType) paramInfo.groupType = mergeType; return paramInfo; }