提示:本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如使用功能不一致,或多个宏代码冲突等),需根据实际需求开发代码。
示例说明
在报表展示时,灵活分析中可能包含多个列。现需要根据参数“展示内容”来控制不同列展示。
当参数“展示内容”选择“产品”时,显示“产品类别”、“产品名称”、“销售量”和“销售额”几列:
当参数“展示内容”选择“区域”时,显示“发货区域”、“发货城市”、“销售量”和“销售额”几列:
版本及客户端要求
1.版本:Smartbi V7.0及以上
2.客户端:PC
3.浏览器:IE11、谷歌浏览器、火狐浏览器
设置方法
1.创建灵活分析报表
在资源定制中创建好灵活分析报表,报表中包含“展示内容”参数
2.设置初始隐藏字段
该灵活分析报表中“展示内容”参数默认值为“产品”。则报表打开时,默认只显示“产品类别”、“产品名称”、“销售量”和“销售额”字段。
点击工具栏中的“字段”按钮,在下拉菜单中将“发货区域”、“发货城市”字段隐藏
3.选中该灵活分析报表,右键选择 编辑宏,进入报表宏界面
4.在报表宏界面选择新建客户端模块。在弹出的新建模块对话框中选择对象为 simpleReport;事件为 onParamValueChanged;并把下面宏代码复制到代码区域。根据实际情况进行修改
宏类型
类型 | 对象 | 事件 |
---|---|---|
ClientSide | simpleReport | onParamValueChanged |
宏代码
function main(simpleReport, simpleReportContext, param) { if (param.name == "展示内容") { //判断是否是"展示内容参数" //获取 产品类别 字段 var categoryname = 'BizViewOutField.I4028818a015c808d808db7fe015c817340eb0502.I4028818a015c808d808db7fe015c81732db504fa'; //获取报表中输出的字段 //获取产品名称 字段 var productname = 'BizViewOutField.I4028818a015c808d808db7fe015c817340eb0502.I4028818a015c808d808db7fe015c81732db504fb'; //获取发货区域字段 var shipregion = 'BizViewOutField.I4028818a015c808d808db7fe015c817340eb0502.I4028818a015c808d808db7fe015c81732db604fc'; //获取发货城市字段 var shipcity = 'BizViewOutField.I4028818a015c808d808db7fe015c817340eb0502.I4028818a015c808d808db7fe015c81732db604fd'; if (param.displayValue == "产品") { //判断为"产品产品"显示哪些字段,true为显示,false为不显示 simpleReport.clientConfig.gridProp.fieldProps[categoryname].visible = true; simpleReport.clientConfig.gridProp.fieldProps[productname].visible = true; simpleReport.clientConfig.gridProp.fieldProps[shipregion].visible = false; simpleReport.clientConfig.gridProp.fieldProps[shipcity].visible = false; } else { simpleReport.clientConfig.gridProp.fieldProps[categoryname].visible = false; simpleReport.clientConfig.gridProp.fieldProps[productname].visible = false; simpleReport.clientConfig.gridProp.fieldProps[shipregion].visible = true; simpleReport.clientConfig.gridProp.fieldProps[shipcity].visible = true; } simpleReport.updateClientConfig(); //更表报表配置 } simpleReport.refreshData(); //刷新报表数据 }
注:
在上述代码中,字段的输出ID,如"BizViewOutField.I4028818a015c808d808db7fe015c817340eb0502.I4028818a015c808d808db7fe015c81732db504fa",是在数据集中获取的