最新历史版本 :控件选项联动 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 版本

报表服务器版本
功能变动
11.0-

1.2 应用场景

当参数面板中有多个控件时,希望后一个控件的选项根据前一个控件选择的值变化,尤其使用在控件选项之间有层级关系的场景中。

例如,省份选项需跟随地区所选值而变动,城市选项需跟随省份所选值而变动。如下图所示:

动图1.gif

1.3 实现思路

此场景主要针对的是有选项的控件,如下拉框、下拉复选框、单选按钮、复选按钮等。

此类控件的选项是通过绑定 数据字典 实现的,所以希望实现选项联动,需要设置一个动态的数据字典。

数据字典的类型有 4 种:数据库表、数据查询、自定义、公式。如下图所示:

其中,数据库表和自定义都是固定的,没有办法设置动态,所以要设置一个动态数据字典,只能通过数据查询或者公式实现。

现介绍三种设置动态数据字典实现控件选项看联动的方法,第一种是数据查询类型的数据字典实现,第二种和第三种都是公式类型的数据字典实现。

  • 方法一:设置数据查询类型的数据字典,数据字典绑定一个动态的数据查询。

  • 方法二:设置 SQL 函数公式类型的数据字典,数据字典绑定一个 SQL 函数构成的动态公式。

  • 方法三:设置数据集函数公式类型的数据字典,数据字典绑定一个数据集函数构成的动态公式。

2. 准备模板编辑

2.1 新建报表 

新建一张普通报表,如下图所示:

新建普通报表.png

2.2 准备数据

实现 控件筛选查询,有两种方式,可以选择通过数据集参数的方法实现,也可以选择通过模板参数的方法实现。

此处因为之后的数据字典绑定时也会定义数据集参数,所以选择数据集参数的方法实现控件筛选查询。

1)新建数据库查询 ds1 :SELECT * FROM 订单 where 货主地区='${area}' and 货主省份='${province}' and 货主城市='${city}'

其中定义了三个数据集参数: areaprovincecity。如下图所示:

准备数据1.jpg

2.3 设计报表

1)A1-I1 单元格输入文本。

2)A2-I2 单元格拖入 ds1 数据集中的数据列,设计报表样式。如下图所示:

设计报表样式1.jpg

2.4 参数绑定控件

定义好参数后,要实现参数查询就必须绑定控件。

1)点击参数面板的编辑按钮,右侧可以看到定义好的三个参数,点击「全部添加」将其添加在参数面板中,并调整三个参数的位置使其按照areaprocvincecity 的顺序排列。如下图所示:

编辑参数面板全部添加.jpg

2)三个参数分别绑定下拉框控件。以参数 area 为例,点击控件的工具按钮,选择控件类型为「下拉框」。如下图所示:

选择下拉框.jpg

2.5 修改标签

分别点击右侧的「Labelarea」 、「Labelprovince、「Labelcity ,修改控件值为:地区:、省份:、城市:。如下图所示:

修改标签.jpg

3. 方法一:数据查询类型的数据字典编辑

模板准备好后,可使用方法一设置数据查询类型的数据字典,使控件的选项可以联动。

3.1 地区

1)新建一个数据库查询「1地区」 :SELECT * FROM 订单 。如下图所示:

地区数据库查询.jpg

2)设置area控件的数据字典,类型设置为「数据查询」,数据集为「1地区」,实际值和显示值都为「货主地区」。如下图所示:

地区数据字典.jpg

3.2 省份

1)新建一个数据库查询「省份」 :SELECT * FROM 订单 WHERE 货主地区='${area}',即province控件的选项必须是 area 下的省份,如下图所示:

省份数据字典.jpg

2)设置province控件的数据字典,类型设置为「数据查询」,数据集为「2省份」,实际值和显示值都为「货主省份」。如下图所示:

省份数据字典.jpg

3.3 城市

1)新建一个数据库查询「3城市」 :SELECT * FROM 订单 WHERE 货主地区='${area}' and 货主省份='${province}',即city控件的选项必须是 area 下 province 下的城市,如下图所示:

城市数据字典.jpg

2)设置city控件的数据字典,类型设置为「数据查询」,数据集为「3城市」,实际值和显示值都为「货主城市」。如下图所示:

城市数据字典.jpg


4. 方法二:SQL函数公式类型的数据字典编辑

模板准备好后,可使用方法二设置 SQL 函数公式类型的数据字典,通过 SQL函数 直接取数据库数据,使控件的选项可以联动。

注:不能通过数据查询实现时可以选择公式实现,尤其绑定的数据来源于内置数据集或者文件数据集时。

4.1 地区

设置area控件的数据字典,类型设置为「公式」,实际值为:sql("FRDemo","select distinct 货主地区 from 订单",1),显示值为:$$$。如下图所示:

地区SQL函数公式.jpg

4.2 省份

设置province控件的数据字典,类型设置为「公式」,实际值为:sql("FRDemo","select distinct 货主省份 from 订单 where 货主地区 = '${area}' ",1),显示值为:$$$,即province控件的选项必须是 area 下的省份。如下图所示:

省份SQL函数公式.jpg

4.3 城市

设置area控件的数据字典,类型设置为「公式」,实际值为:sql("FRDemo","select distinct 货主城市 from 订单 where 货主地区 = '${area}' and 货主省份 = '${province}'",1),显示值为:$$$,即city控件的选项必须是 area 下 province 下的城市。如下图所示:

城市SQL函数公式.jpg

5. 方法三:数据集函数公式类型的数据字典编辑

模板准备好后,可使用方法三设置数据集函数公式类型的数据字典,通过 数据集函数 取数据集中的数据,使控件的选项可以联动。

注:不能通过数据查询实现时可以选择公式实现,尤其绑定的数据来源于内置数据集或者文件数据集时。

5.1 新建数据查询

新建一个数据库查询 ds2 :SELECT * FROM 订单。如下图所示:

ds2.jpg

5.2 地区

设置area控件的数据字典,类型设置为「公式」,实际值为:ds2.select(货主地区),显示值为:$$$。如下图所示:

地区数据集函数公式.jpg

5.3 省份

设置province控件的数据字典,类型设置为「公式」,实际值为:ds2.select(货主省份,货主地区=$area),显示值为:$$$province控件的选项必须是 area 下的省份如下图所示:

省份数据集函数公式.jpg

5.4 城市

设置city控件的数据字典,类型设置为「公式」,实际值为:ds2.select(货主城市,货主地区=$area&&货主省份=$province),显示值为:$$$city控件的选项必须是 area 下 province 下的城市。如下图所示:

城市数据集函数公式.jpg

6.  效果预览编辑

6.1 PC端

PC端预览,如下图所示:

动图1.gif

6.2 移动端

移动端预览,以 App 为例,如下图所示:

动图2.gif

7. 下载模板编辑