文档首页 / 下拉选项来源与联动

下拉选项来源与联动

说明下拉框、多选下拉、单选组、复选组的四种选项来源,选项级联(联动下拉)的触发条件与限制,以及大数据量字典的搜索选择方案。

概述

下拉框、多选下拉、单选组、复选组这四种控件的选项,可以来自手工录入、报表里的数据集、公式或一条直连 SQL。选项之间还可以联动:某个下拉的取数文本里引用了另一个控件绑定的参数,那个控件的值一变,本下拉的选项就自动重新取数。

功能入口

「查询表单设计」对话框 > 选中下拉框、多选下拉、单选组或复选组 > 右侧「组件属性」 > 「选项配置」分区 > 「选项类型」。

选项类型

「选项类型」有四个取值,新建控件默认是「自定义选项」。

选项类型 选项来自 适用场景
自定义选项 设计者手工录入的「显示值 / 实际值」列表 选项固定且很少,如「门诊」「住院」
绑定数据集 报表中已定义的数据集 字典已经是报表的一个数据集
公式字典 一个返回列表的表达式 选项可以用表达式生成
直连SQL字典 一条直接写在控件上的 SQL 只为这个下拉取数,不想单独建数据集

自定义选项

点击「编辑选项」,在「选项编辑」弹窗里点「添加选项」,逐行填写「显示值」「实际值」。确定时会校验:显示值不能为空、实际值不能为空、实际值不能重复,否则提示「第 N 行…」。「显示值」是使用者看到的文字,「实际值」是提交给参数的值。

绑定数据集

属性 说明 取值/默认值
数据集 提供选项的数据集 必选
显示字段 作为显示值的字段 必选
值字段 作为实际值的字段 必选
简拼字段 数据源自带的简拼列 可选;不选则按显示字段自动生成简拼

数据集、显示字段、值字段有任一项未选时,下拉里没有选项。

公式字典

属性 说明 取值/默认值
公式 返回列表的表达式 必填,如 '北京,上海,广州'.split(',')
显示字段 元素是对象时取此字段作显示值 缺省取 label
值字段 元素是对象时取此字段作实际值 缺省取 value
简拼字段 元素是对象时取此字段作简拼 可选;缺省按显示字段自动生成

表达式返回标量列表时,显示值与实际值相同;返回对象列表时按「显示字段」「值字段」取值。公式必须是合法的脚本表达式,不能是裸的数组字面量,需要写成方法调用,例如 '门诊,住院,全院'.split(',')。

直连SQL字典

属性 说明 取值/默认值
数据源 数据源名称 留空使用报表默认数据源
SQL 查询选项的 SQL 如 SELECT name AS label, id AS value FROM dim_dept
显示字段 SQL 结果中作显示值的列 如 label
值字段 SQL 结果中作实际值的列 如 value
简拼字段 结果中作简拼的列 可选;缺省按显示字段自动生成

SQL 经后端数据集链路执行,参数占位与数据集 SQL 相同,可引用报表参数($参数名)。显示字段、值字段、SQL 任一为空时,该控件没有选项。

简拼搜索

下拉框和多选下拉支持输入关键字过滤,也可以按简拼匹配,如输入 xhy 匹配「小换药」。源表有简拼列时在「简拼字段」里指定,否则按显示字段自动生成。

选项级联

触发条件

「选项级联」开关出现在「绑定数据集」「公式字典」「直连SQL字典」三种类型下,默认开启。开启时,如果本控件选项的取数文本里引用了其他控件绑定的参数,被引用的参数一变,本控件的选项就重新取数:

  • 「绑定数据集」的取数文本是该数据集的 SQL(API 数据集则是地址、请求体和参数默认值);
  • 「公式字典」的取数文本是公式;
  • 「直连SQL字典」的取数文本是 SQL。

依赖由系统对取数文本按字面匹配自动侦测,不需要额外配置;$库房、${库房}、${$库房} 三种形态都会被识别为引用。但作为 SQL 参数取值时应写 $库房 或 ${$库房},${库房}(没有内层 $)里的 库房 是未定义标识符,求值为空(null),拿不到参数值,SQL 里会绑定为 NULL,见 参数类型、默认值与传参。

关闭「选项级联」后,选项只在打开报表时取一次。「自定义选项」没有取数过程,不参与级联。

联动时的行为

  • 上级控件的值变化后,等待约 250 毫秒再重新取数,避免多选时逐个勾选连续请求。
  • 重新取数后,已选值如果不在新选项里,会被自动清除。
  • 重新取数失败时保留原有选项,不清空下拉。
  • 树形下拉在数据来源为「数据集」且未使用懒加载时,同样按数据集 SQL 里的参数引用联动。

限制

  • 只支持单向联动,即 A 影响 B。A、B 互相引用时,系统只保留先发现的一个方向并断开另一个方向,避免死循环。
  • 联动依赖的是取数文本里的字面引用,用表达式间接拼出的参数名不会被识别。

示例

做一个「大区 → 城市」联动下拉,再用两个值查询客户。使用系统初始化时导入的演示数据(数据源 demo)。

  1. 「查询参数设置」中添加两个字符串参数:region、city。
  2. 新建 SQL 数据集「客户」,数据源选 demo:
SELECT 客户名称, 客户类型, 客户等级, 所在大区, 所在城市
FROM demo_客户
WHERE 所在大区 = $region AND 所在城市 = $city
  1. 在报表中用「客户」数据集的字段绑定明细列(行扩展,参见 单元格绑定与扩展)。
  2. 「查询表单设计」中添加「下拉框」,标签填「大区」,绑定 region,「选项类型」选「直连SQL字典」:数据源填 demo,SQL 填
SELECT DISTINCT 大区 AS label, 大区 AS value FROM demo_地区

显示字段填 label,值字段填 value。 5. 再添加一个「下拉框」,标签填「城市」,绑定 city,「选项类型」同样选「直连SQL字典」,SQL 填

SELECT 城市 AS label, 城市 AS value FROM demo_地区 WHERE 大区 = $region

显示字段 label,值字段 value,「选项级联」保持开启。 6. 两个下拉都打开「是否必填」,再添加「查询按钮」。 7. 确定、保存、预览。在「大区」里选「华东」,「城市」的选项刷新为华东大区的城市;再改选「华北」,「城市」里原先选的华东城市被清除,选项变为华北的城市。

数据量很大的字典

下拉框、多选下拉用虚拟滚动渲染,选项很多时也只渲染可见的行。字典达到数千条以上、需要按关键字在服务端查找时,用「搜索选择」控件:关键字与分页在服务端执行,弹窗表格分页显示,见 查询表单控件。

注意事项

注意:选项值来自数据库原始值,类型可能与参数声明的类型不同(如字典 id 是整数、参数是字符串)。通过 URL 或宿主传入参数值时,系统会按字符串比较、去除首尾空白等方式把值对齐到选项,使其能被选中。

注意:数据集绑定的选项在打开报表时随首屏一次取回。数据集本身没有引用其他控件的参数时,选项不会随其他控件变化。

提示:设计器目前没有「远程搜索下拉」的配置项,大数据量字典请使用「搜索选择」。

相关文档

联系我们

请填写您的信息,我们将在 1 个工作日内与您联系。