示例说明
在某特定情况下,需要实现在报表跳转传参时,根据传递的值内容,把值传递到不同的参数中。如从“传参源标报表”报表通过“指标名称”字段带参跳转到“传参目标报表”报表,当“传参源标报表”报表中的“指标名称”的值为“1996”、“1997”、“1988”时,把值传到“传参目标报表”报表的“销售时间”参数中;否则就传到把值传到“传参目标报表”报表的“产品类别”参数中。
当在“传参源标报表”报表点“1996”行数据时跳转到传参目标报表”报表时,付值给“销售时间”参数中,如下图:
当在“传参源标报表”报表点“饮料”行数据时跳转到传参目标报表”报表时,付值给“产品类别”参数中,如下图:
在某特定情况下,需要实现在报表跳转传参时,根据传递的值内容,把值传递到不同的参数中。如从“传参源标报表”报表通过“指标名称”字段带参跳转到“传参目标报表”报表,当“传参源标报表”报表中的“指标名称”的值为“2013-01-01 00:00:00”、“2013-01-03 00:00:00”、时,把值传到“传参目标报表”报表的“销售时间”参数中;否则就传到把值传到“传参目标报表”报表的“地图区域-无初始值”参数中。
当在“传参源标报表”报表点“华北”行数据时跳转到传参目标报表”报表时,付值给“地图区域-无初始值”参数中,如下图:
当在“传参源标报表”报表点“2013-01-01 00:00:00”行数据时跳转到传参目标报表”报表时,付值给“订单时间”参数中,如下图:
设置方法
- 在【资源定制】创建案例类似的页面。
- 选中页面,右键选择 编辑宏 进入报表宏界面,右击【编辑宏】->创建【跳转规则向导】。
- 在双点打开已创建的跳转规则的action,在该界面中进行修改【跳转规则向导】生成宏代码,如下图:
宏类型
类型 | 对象 | 事件 |
ClientSide | simpleReport | onRenderTableonLinkClick |
宏代码
代码块 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
function main(simpleReport, simpleReportContextparamToString(v) { simpleReport.addColumnLinkByName("指标名称", me); //字段别名:指标名称 }return varv menuItem== =null {? null alias: "传参", callback: function(simpleReport, simpleReportContextv.toString(); } function main(spreadsheetReport, ruleName, params, page, pageContext) { if simpleReport.writeParamsToContext(); (ruleName != "跳转") return; var targetResId = "I4028813957a114bf014b58970b73015aI40288190015b8ab58ab5d18b015b8f1ba4072292"; var newReport = false; //找到对应的dashlet对象,并刷新它。 ${Locatethecorresponding}dashlet${Object}${Comma}${Andrefreshit}${Period} var dashlet = page.findDashletByReportId(targetResId); //dashlet不存在 dashlet${Doesnotexist} if (!dashlet) return; var portlet = dashlet.currentPortlet; if (!portlet) { return;} } //设置或收集参数值。 if var(typeof realValueparamsInfo != simpleReport.getCurrentFieldRealValue("指标名称undefined"); && var dispValue = simpleReport.getCurrentFieldValue("指标名称"); var pObj = { "value": realValue, "displayValue": dispValue }; //创建静态参数 var jObj = { "value": "", "displayValue": "" }; //判断参数值,并根据不同情况给对应该的目标报表接收参数付值 if (realValue == "1996" || realValue == "1997" || realValue == "1998") { if (pObj) { portlet.fillParamValue("产品类别", jObj.value, jObj.displayValue); portlet.fillParamValue("销售时间", pObj.value, pObj.displayValue); } } else { if (pObj) { portlet.fillParamValue("销售时间", jObj.value, jObj.displayValue); portlet.fillParamValue("产品类别", pObj.value, pObj.displayValue); } } /*//去掉【跳转规则】生成代码中的参数无付值代码 if (pObj) { portlet.fillParamValueFromObj("产品类别", pObj); } var realValue = simpleReport.getCurrentFieldRealValue("指标名称"); var dispValue = simpleReport.getCurrentFieldValue("指标名称"); var pObj = { "value": realValue, "displayValue": dispValue }; if (pObj) { portlet.fillParamValueFromObj("销售时间", pObj); } */ //设置参数值到报表对象 portlet.commitParamValue(); portlet.refreshData(); } } var me = menuItem; //创建参数信息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; } |