反馈已提交

网络繁忙

控件选项联动

  • 文档创建者:RosieY
  • 编辑次数:3次
  • 最近更新:RosieY 于 2022-09-23
  • 1. 概述

    1.1 预期效果

    当参数面板中有多个控件时,希望后一个控件的选项根据前一个控件选择的值变化,尤其使用在控件选项之间有层级关系的场景中。如下图所示,省份选项需跟随地区所选值而变动,城市选项需跟随地区、省份所选值相应变动。

    1599619696763320.gif

    1.2 实现思路

    这种场景主要针对的是有选项的控件,如下拉框、下拉复选框、单选按钮、复选按钮等。我们知道这类控件的选项是通过绑定 数据字典 实现的,所以想要实现选项联动,就要修改数据字典,设置一个动态的数据字典。

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

    • 数据查询:数据字典绑定一个数据查询,数据查询中查询的数据受前一个控件所选值的影响。

    • 公式:数据字典绑定一个公式,根据前一个控件的参数值,从数据集中过滤数据或者从表中过滤数据。

    2. 实现方法

    2.1 数据查询实现

    控件的数据字典绑定一个带有数据集参数的数据查询,如果你的控件绑定的数据是从数据库查询获得,推荐使用此方法。

    2.1.1 设计查询报表

    首先要实现一个 控件筛选查询,可以选择通过数据集参数的方法实现,也可以选择通过模板参数的方法实现。这里因为数据字典绑定时也会定义数据集参数,所以选择数据集参数的方法实现。

    1)首先定义一个数据集用来制作报表时查询数据:SELECT * FROM 订单 where 货主地区='${area}' and 货主省份='${province}' and 货主城市='${city}',其中定义了三个参数 area、province、city。

    2)将 ds1 数据集的数据列拖到报表中,设计报表样式,如下图所示:

    2.1.2 设计过滤控件

    2.1.1 节中已经定义好了数据集参数,如果要实现查询就必须绑定控件。点击参数面板,在参数面板「组件设置」处可以看到定义好的三个参数,点击将其添加在参数面板中,将其类型选择为「下拉框」控件。如下图所示:

    现在要绑定三个下拉框的数据字典,设置控件的选项可以联动。

    1)地区控件 area 的选项不受任何控件的影响,直接绑定即可,可以选择绑定数据表,也可以绑定数据查询。这里新建一个数据查询 ds2:SELECT * FROM 订单

    控件数据集绑定数据查询 ds2 的货主地区字段。

    2)省份控件 province 的选项要受地区控件 area 影响,逻辑为 province 控件的选项必须是 area 地区下的。所以新建一个数据查询 ds3:SELECT * FROM 订单 WHERE 货主地区='${area}',控件数据集绑定数据查询 ds3 的货主省份字段。

    这样当 area 选择不同值后,ds3 的值也会随着变化,查询出的城市都是 area 地区下的省份。如下图所示:

    3)城市控件 city 的选项要受地区控件 area 和省份控件 province 的影响,逻辑为 city 控件的选项必须是 area 地区province 省份下的,所以新建一个数据查询 ds4:SELECT * FROM 订单 WHERE 货主地区='${area}' and 货主省份='${province}'。控件数据集绑定数据查询 ds4 的货主城市字段。

    这样当 area 和 province 选择不同值后,ds4 的值也会随着变化,查询出的城市都是 area 地区 province 省份下的城市。如下图所示:

    2.1.3 效果预览

    修改下「标签控件」的名称,将 area 修改为地区、province 修改为省份、 city 修改为城市。如下图所示:

    保存模板,点击预览,地区控件选择华中,省份控件中的选项就只有华中地区的省份;省份控件选择湖北,城市控件的选项就只能是湖北的城市,城市控件选择武汉后点击查询就只查询出武汉的数据。如下图所示:

    1599619696763320.gif

    2.2 公式实现

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

    2.2.1 设计查询报表

    首先要实现一个 控件筛选查询,可以选择通过数据集参数的方法实现,也可以选择通过模板参数的方法实现。这里选择数据集参数的方法实现。

    1)首先定义一个数据集用来制作报表时查询数据:SELECT * FROM 订单 where 货主地区='${area}' and 货主省份='${province}' and 货主城市='${city}',其中定义了三个参数 area、province、city。

    2)将 ds1 数据集的数据列拖到报表中,设计报表样式,如下图所示:

    2.2.2 设计过滤控件

    2.2.1 节中已经定义好了数据集参数,如果要实现查询就必须绑定一个控件。点击参数面板,在参数面板「组件设置」处可以看到定义好的三个参数,点击将其添加在参数面板中,将其类型选择为「下拉框」控件。如下图所示:

    现在要绑定三个下拉框的数据字典,设置控件的选项可以联动。新建一个数据查询ds2:SELECT * FROM 订单,用来绑定控件的数据字典。

    1)地区控件 area 的选项不受任何控件影响,直接绑定订单表的地区列,或者 ds2 数据查询的地区列:

    • 通过 SQL函数 直接取数据库数据:sql("FRDemo","select distinct 货主地区 from 订单",1)

    • 通过 数据集函数 tablename.select 取数据集中的数据:ds2.select(货主地区)

    如下图所示:

    2)省份控件 province 的选项要受地区控件 area 影响,逻辑为 province 控件的选项必须是 area 地区下的,可以通过公式结合参数实现。实际值处输入公式:ds2.select(货主省份,货主地区=$area),取数据集中货主地区=参数 area 的货主省份。如

    下图所示:

    3)城市控件 city 的选项要受地区控件 area 和省份控件 province 的影响,逻辑为 city 控件的选项必须是 area 地区province 省份下的。实际值处输入公式:ds2.select(货主城市,货主地区=$area&&货主省份=$province),取数据集中货主地区=参数 area 且货主省份=参数 province 的货主城市。如下图所示:


    2.1.3 效果预览

    修改下「标签控件」的名称,将 area 修改为地区、province 修改为省份、 city 修改为城市。如下图所示:

    保存模板,点击预览,地区控件选择华中,省份控件中的选项就只有华中地区的省份。省份控件选择湖北,城市控件的选项就只能是湖北的城市,城市控件选择武汉后点击查询就只查询出武汉的数据。如下图所示:

    1599619696763320.gif

    附件列表


    主题: 参数应用
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    请前往「服务平台」,选择「在线支持」

    热线电话:400-811-8890转2

    在线QQ(将在2023.01.05关停):800049425

    总裁办24H投诉

    热线电话:173-1278-1526

    文 档反 馈

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭

    7*24h

    智 能客 服