示例说明
在某特定情况下,需要实现在报表跳转传参时,根据传递的值内容,把值传递到不同的参数中。如从“传参源标报表”报表通过“指标名称”字段带参跳转到“传参目标报表”报表,当“传参源标报表”报表中的“指标名称”的值为“1996”、“1997”、“1988”时,把值传到“传参目标报表”报表的“销售时间”参数中;否则就传到把值传到“传参目标报表”报表的“产品类别”参数中。
当在“传参源标报表”报表点“1996”行数据时跳转到传参目标报表”报表时,付值给“销售时间”参数中,如下图:
当在“传参源标报表”报表点“饮料”行数据时跳转到传参目标报表”报表时,付值给“产品类别”参数中,如下图:
设置方法
宏类型
类型 | 对象 | 事件 |
ClientSide | simpleReport | onRenderTable |
宏代码
function main(simpleReport, simpleReportContext) { simpleReport.addColumnLinkByName("指标名称", me); //字段别名:指标名称 } var menuItem = { alias: "传参", callback: function(simpleReport, simpleReportContext, page, pageContext) { simpleReport.writeParamsToContext(); var targetResId = "I4028813957a114bf014b58970b73015a"; var newReport = false; //找到对应的dashlet对象,并刷新它。 var dashlet = page.findDashletByReportId(targetResId); //dashlet不存在 if (!dashlet) return; var portlet = dashlet.currentPortlet; if (!portlet) { return; } //设置或收集参数值。 var realValue = simpleReport.getCurrentFieldRealValue("指标名称"); 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; //创建参数信息 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; } |