1. 概述
1.1 版本
报表服务器版本 | 功能变动 |
---|---|
11.0 | - |
1.2 应用场景
当参数面板中有多个控件时,希望后一个控件的选项根据前一个控件选择的值变化,尤其使用在控件选项之间有层级关系的场景中。
例如,省份选项需跟随地区所选值而变动,城市选项需跟随省份所选值而变动。如下图所示:
1.3 实现思路
此场景主要针对的是有选项的控件,如下拉框、下拉复选框、单选按钮、复选按钮等。
此类控件的选项是通过绑定 数据字典 实现的,所以希望实现选项联动,需要设置一个动态的数据字典。
数据字典的类型有 4 种:数据库表、数据查询、自定义、公式。如下图所示:
其中,数据库表和自定义都是固定的,没有办法设置动态,所以要设置一个动态数据字典,只能通过数据查询或者公式实现。
现介绍三种设置动态数据字典实现控件选项看联动的方法,第一种是数据查询类型的数据字典实现,第二种和第三种都是公式类型的数据字典实现。
方法一:设置数据查询类型的数据字典,数据字典绑定一个动态的数据查询。
方法二:设置 SQL 函数公式类型的数据字典,数据字典绑定一个 SQL 函数构成的动态公式。
方法三:设置数据集函数公式类型的数据字典,数据字典绑定一个数据集函数构成的动态公式。
2. 准备模板
2.1 新建报表
新建一张普通报表,如下图所示:
2.2 准备数据
实现 控件筛选查询,有两种方式,可以选择通过数据集参数的方法实现,也可以选择通过模板参数的方法实现。
此处因为之后的数据字典绑定时也会定义数据集参数,所以选择数据集参数的方法实现控件筛选查询。
1)新建数据库查询 ds1 :SELECT * FROM 订单 where 货主地区='${area}' and 货主省份='${province}' and 货主城市='${city}'。
其中定义了三个数据集参数: area、province、city。如下图所示:
2.3 设计报表
1)A1-I1 单元格输入文本。
2)A2-I2 单元格拖入 ds1 数据集中的数据列,设计报表样式。如下图所示:
2.4 参数绑定控件
定义好参数后,要实现参数查询就必须绑定控件。1)点击参数面板的编辑按钮,右侧可以看到定义好的三个参数,点击「全部添加」将其添加在参数面板中,并调整三个参数的位置使其按照area、procvince、city 的顺序排列。如下图所示:
2)三个参数分别绑定下拉框控件。以参数 area 为例,点击控件的工具按钮,选择控件类型为「下拉框」。如下图所示:
2.5 修改标签
分别点击右侧的「Labelarea」 、「Labelprovince」、「Labelcity」 ,修改控件值为:地区:、省份:、城市:。如下图所示:
3. 方法一:数据查询类型的数据字典
模板准备好后,可使用方法一设置数据查询类型的数据字典,使控件的选项可以联动。
3.1 地区
1)新建一个数据库查询「1地区」 :SELECT * FROM 订单 。如下图所示:
2)设置area控件的数据字典,类型设置为「数据查询」,数据集为「1地区」,实际值和显示值都为「货主地区」。如下图所示:
3.2 省份
1)新建一个数据库查询「省份」 :SELECT * FROM 订单 WHERE 货主地区='${area}',即province控件的选项必须是 area 下的省份,如下图所示:
2)设置province控件的数据字典,类型设置为「数据查询」,数据集为「2省份」,实际值和显示值都为「货主省份」。如下图所示:
3.3 城市
1)新建一个数据库查询「3城市」 :SELECT * FROM 订单 WHERE 货主地区='${area}' and 货主省份='${province}',即city控件的选项必须是 area 下 province 下的城市,如下图所示:
2)设置city控件的数据字典,类型设置为「数据查询」,数据集为「3城市」,实际值和显示值都为「货主城市」。如下图所示:
4. 方法二:SQL函数公式类型的数据字典
模板准备好后,可使用方法二设置 SQL 函数公式类型的数据字典,通过 SQL函数 直接取数据库数据,使控件的选项可以联动。
注:不能通过数据查询实现时可以选择公式实现,尤其绑定的数据来源于内置数据集或者文件数据集时。
4.1 地区
设置area控件的数据字典,类型设置为「公式」,实际值为:sql("FRDemo","select distinct 货主地区 from 订单",1),显示值为:$$$。如下图所示:
4.2 省份
设置province控件的数据字典,类型设置为「公式」,实际值为:sql("FRDemo","select distinct 货主省份 from 订单 where 货主地区 = '${area}' ",1),显示值为:$$$,即province控件的选项必须是 area 下的省份。如下图所示:
4.3 城市
设置area控件的数据字典,类型设置为「公式」,实际值为:sql("FRDemo","select distinct 货主城市 from 订单 where 货主地区 = '${area}' and 货主省份 = '${province}'",1),显示值为:$$$,即city控件的选项必须是 area 下 province 下的城市。如下图所示:
5. 方法三:数据集函数公式类型的数据字典
模板准备好后,可使用方法三设置数据集函数公式类型的数据字典,通过 数据集函数 取数据集中的数据,使控件的选项可以联动。
注:不能通过数据查询实现时可以选择公式实现,尤其绑定的数据来源于内置数据集或者文件数据集时。
5.1 新建数据查询
新建一个数据库查询 ds2 :SELECT * FROM 订单。如下图所示:
5.2 地区
设置area控件的数据字典,类型设置为「公式」,实际值为:ds2.select(货主地区),显示值为:$$$。如下图所示:
5.3 省份
设置province控件的数据字典,类型设置为「公式」,实际值为:ds2.select(货主省份,货主地区=$area),显示值为:$$$,即province控件的选项必须是 area 下的省份。如下图所示:
5.4 城市
设置city控件的数据字典,类型设置为「公式」,实际值为:ds2.select(货主城市,货主地区=$area&&货主省份=$province),显示值为:$$$,即city控件的选项必须是 area 下 province 下的城市。如下图所示:
6. 效果预览
6.1 PC端
PC端预览,如下图所示:
6.2 移动端
移动端预览,以 App 为例,如下图所示:
7. 下载模板
点击下载方法一已完成模板:数据查询类型的数据字典实现控件选项联动.cpt
点击下载方法二已完成模板:SQL函数公式类型的数据字典实现控件选项联动.cpt
点击下载方法三已完成模板:数据集函数公式类型的数据字典实现控件选项联动.cpt