1. 概述
1.1 问题描述
目前下拉框控件自带的模糊查询功能,在匹配的时候会将多个字符拆开来进行匹配。例如输入 ABC ,则会匹配数据字典中同时有 A、B、C 且顺序一致的数据,而不是匹配 ABC 连在一起的数据。那么要怎么实现精确一些的模糊搜索呢?
1.2 实现思路
数据库的 like 语句是可以实现精确的模糊搜索功能的,那就可以利用控件数据字典联动的方式来实现需求。
注1:该方案只支持下拉框,对于下拉复选框目前无有效方案可以实现。
注2:不支持移动端
2. 示例
2.1 数据准备
1)新建数据集 ds1,数据库查询语句为:SELECT * FROM S客户 WHERE 客户ID like '%${abc}%',如下图所示:
2)新建数据集 ds2,数据库查询语句为:SELECT * FROM S客户,如下图所示:
2.2 报表设计
1)在参数面板拖入 2 个标签控件和 2 个下拉框控件,给第一个下拉框控件设置控件名称为abc,第一个标签控件名称为模糊查询结果,给第二个下标签控件名称为下拉框自带模糊查询结果,如下图所示:
2)下拉框数据字典分别设置为 ds1 和 ds2 ,实际值和显示值都绑定客户 ID 字段,如下图所示:
3)下拉框控件均勾选允许直接编辑,允许自定义值,如下图所示:
2.3 效果预览
保存报表,点击分页预览。
在第一个下拉框控件中输入 BL ,查询出结果为 BLAUS、BLONP
在第二个下拉框控件中输入 BL ,查询出结果为BLAUS、BLONP、BOLID
如下图所示:
注:不支持移动端。
3. 模板下载
已完成模板可参见:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Parameter\下拉框模糊搜索精确匹配方案.cpt
点击下载模板:下拉框模糊搜索精确匹配方案.cpt