本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如使用功能不一致,或多个宏代码冲突等),需根据实际需求开发代码。

示例说明
 smartbi中的报表资源是可以重复利用,在很多情况下同一张报表资源会在不同的页面中使用,但是在不同的页面中的同一张报表会需求看的数据不同,则这时需要实现同一张报表资源在不同的页面中初始化参数的默认值不同。例如:以在仪表盘不同的页面中同一张报表的公共参数设置不同的默认值。

在A页面中需要报表参数【产品名称参数】的初始化值为"苹果汁";

在B页面中需要报表参数【产品名称参数】的初始化值为"蕃茄酱"。


 设置方法

注:对每张页面分别设置如下操作,以A页面为例:

1、在资源定制节点下,创建一个页面,并把含有参数的报表放到页面中,把参数设置为公共参数;
     

2、选中页面,右键选择 编辑宏 进入报表宏界面。

3、在报表宏界面新建客户端模块。在弹出的新建模块对话框中选择对象为page;事件为onRenderPage;并把下面宏代码复制到代码区域;
   

宏类型

类型

对象

事件

ClientSide

page

onRenderPage

宏代码

 
 function main(page, pageContext) {
    var targetResId = "I2c949eaf1a942102011a955a682c0159"; //获取报表资源
    var newReport = false;
    //找到对应的dashlet对象,并刷新它。
    var dashlet = page.findDashletByReportId(targetResId);
    var portlet = dashlet.currentPortlet;
    //设置页面公共参数的静态值
    var pObj = {
        name: "产品名称参数",
        //参数名称
        value: "苹果汁",
        //参数的真实值
        displayValue: "苹果汁" //参数的显示值
    }
    if (pObj) {
        portlet.fillParamValueFromObj("产品名称参数", pObj);
    }
    //设置参数值到报表对象
    portlet.commitParamValue();
    portlet.refreshData();
}

关键对象总结