1. 概述
1.1 问题描述
下拉框控件是常用的查询控件之一,实际使用中有一种场景,从某处复制了一个收货地址,然后粘贴到下拉框进行查询,但是这种复制来的地址里面有时候会含有空白符(包括:空格、制表符 tab、换行符等)。
例如:当中复制过来的一个地址里面就含有Tab空白符【 黄岛区新技术开发区 65 号】,但是粘贴到下拉框中后Tab在文字的最前面被挡住了,部分用户不知道自己复制了含Tab的文字点击查询,结果是查询为空。
1.2 实现思路
1)通过编写SQL语句实现查询。
2)为查询控件添加点击事件,添加JS代码实现查询。
2. 示例一
2.1 数据准备
建立数据集,输入SQL语句如下,将数据集命名为ds1,如下图所示:
SELECT * FROM 订单
where 1=1
${if(len(订单ID)==0,"","and 订单ID LIKE '%"+ trim(订单ID)+ "%'")}
${if(len(货主地址)==0,"","and 货主地址 LIKE '%"+ trim(货主地址)+ "%'")}
公式注释:
${if(len(订单ID)==0,"","and 订单ID LIKE '%"+ trim(订单ID)+ "%'")}和${if(len(货主地址)==0,"","and 货主地址 LIKE '%"+ trim(货主地址)+ "%'")}主要是为了实现模糊查询功能。
trim()用于删除字符串的头尾空白符,空白符包括:空格、制表符 tab、换行符等,并且trim() 不会改变原始字符串,不会删除原有文字内部的空白符。
2.2 报表设计
如下图所示:
2.3 参数面板设计
1)将参数添加至参数面板,控件选择为下拉框控件,如下图所示:
2)为订单ID的下拉框控件绑定数据字典,如下图所示:
3)为货主地区的下拉框控件绑定数据字典,如下图所示:
2.4 效果预览
保存报表,选中分页预览,如下图所示:
注:不支持移动端。
3. 示例二
3.1 数据准备
建立数据集,输入SQL语句如下,将数据集命名为ds2:
SELECT * FROM 订单
where 1=1
${if(len(订单ID)==0,"","and 订单ID LIKE '%"+ 订单ID+ "%'")}
${if(len(货主地址)==0,"","and 货主地址 LIKE '%"+ 货主地址+ "%'")}
3.2 报表设计
与 2.2 节一致。
3.3 参数面板设计
1)与 2.3 节相同。
2)选择查询按钮,添加点击事件,如下图所示:
3.4 效果预览
与 2.4 节一致。
4. 模板下载
已完成模板可参见:
%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\参数界面JS实例\SQL下拉框控件值首尾含有空白符也能实现查询.cpt
%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\参数界面JS实例\JS下拉框控件值首尾含有空白符也能实现查询.cpt
点击下载模板: