1. 概述编辑
1.1 需求描述
下拉框参数联动 、下拉复选框参数联动 文档中,实现参数联动是在数据库查询 SQL 中设置参数,但并非所有的数据都来源于 SQL 数据查询,有可能是文件数据集、内置数据集等,这时就需要通过设置公式来实现参数联动。联动效果如下图所示:
另外数据集查询速度会受数据库性能的影响,当数据量过大时会因为加载慢导致卡顿。通过自定义内置数据集,页面初始化时直接读取数据集实现参数联动,可以提高参数联动速度。
1.2 实现思路
使用数据集函数来实现,数据集函数如何使用可参考 :数据集函数
2. 示例编辑
2.1 准备数据
1)新建模板,新建一个内置数据集 Embedded1 ,如下图所示:
2.2 添加模板参数
点击菜单栏「模板>模板参数」,新建两个模板参数「产品类型」和「产品」,如下图所示:
2.3 添加控件
将两个模板添加到参数面板,并且设置控件类型为「下拉框控件」,如下图所示:
2.4 绑定数据字典
2.4.1 下拉框
1)选中「产品类型」控件,在「控件设置>属性>数据字典」处为其绑定数据集 Embedded1 的产品类型列。如下图所示:
2)选中「产品」控件,在「控件设置>属性>数据字典」处为其绑定数据。如下图所示:
数据字典处、类型设置为「公式」,其中实际值处设置如下公式,显示值处空白即可。if(len($产品类型)=0,Embedded1.select(产品),eval("Embedded1.select(产品,产品类型='"+$产品类型+"')"))
2.4.2 下拉复选框
1)如果「产品类型」控件是复选框控件,那么可设置复选框控件返回值类型为数组,如下图所示:
2)「产品」下拉框「数据字典」处实际值公式改为:
if(len($产品类型)=0,Embedded1.select(产品),eval("Embedded1.select(产品,inarray(产品类型,['"+joinarray($产品类型,"','")+"'])>0)"))
3)还可将控件名称修改与数据集字段名不一致后,使用如下公式,如修改「产品类型」控件控件名为「产品类」:Embedded1.group(产品,INARRAY(产品类,split($产品类型,"','"))>0)
注:使用此公式时,参数名(控件名)尽量不要与数据集中字段名称一致,否则公式容易因无法辨识失效。
2.5 效果预览
2.5.1 PC 端
保存模板,点击「分页预览」,效果如 1.1 节所示:
2.5.2 移动端
移动端 及 H5 效果如下图所示:
3. 模板下载编辑
已完成模板可参见:
%FR_HOME%\webroot\WEB-INF\reportlets\doc\Parameter\公式实现下拉框参数联动.cpt
%FR_HOME%\webroot\WEB-INF\reportlets\doc\Parameter\公式实现下拉复选框参数联动.cpt
点击下载模板:公式实现下拉框参数联动.cpt 公式实现下拉复选框参数联动.cpt