历史版本8 :下拉复选框参数为空选择全部 返回文档
编辑时间:
内容长度:图片数:目录数:
修改原因:
1. 描述编辑
下拉复选框参数为空选择全部 在线视频学习 请查看【参数为空选择全部】
在使用参数进行过滤时,选择某个参数值后就会根据选择的值进行过滤,但是如何实现如下图效果即货主地区下拉复选框中不选择参数值时能够查询出数据表中的全部值呢?
2. 模板准备编辑
2.1 新建数据集
添加数据集ds1,SQL语句为:SELECT * FROM 订单。
2.2 报表设计
在第一行添加表头,将数据集ds1的字段依次拖入单元格中,如下图所示:

2.3 添加参数控件
1)添加一个标签控件,控件值设置为货主地区::

2)添加一个下拉复选框控件,控件名为area,数据字典选择数据库表,数据库为FRDemo,数据表为订单,实际值与显示值的列名都选择货主地区:

3)添加查询控件:

4)点击参数面板空白处,在右侧的属性中,设置不勾选点击查询前不显示报表内容:

2.4 设置参数为空选择全部
由于参数的定义有两种方式,因此下面我们分别介绍下参数为空选出全部值的做法。
3. 方法一:通过数据集参数编辑
1)设置下拉复选框控件area的返回值类型为字符串,分隔符为',':

2)将数据集ds1的sql语句修改为:SELECT * FROM 订单 where 1=1 ${if(len(area) == 0,"","and 货主地区 in ('" + area + "')")}
注:where 1=1表示条件永真,防止没有之后的参数条件时,where多出而导致出错;len(area)==0表示参数area为空;"and 货主地区 in ('"+area+"')" 中间的area表示取参数值,'+' 为字符串拼接符号。
${if(len(area) == 0,"","and 货主地区 in ( '" + area + "')")} 表示若参数area为空就不进行过滤,若不为空则货主地区等于参数值。
此处参数名area与参数面板中添加的下拉复选框控件area控件名一致,即将参数控件与数据集参数绑定到一起,实现参数的过滤。
4. 方法二:通过报表参数编辑
1)双击A2单元格,选择过滤按钮,给A2单元格增加过滤条件:货主地区包含于公式:if(len($area)==0,nofilter,$area)
注:nofilter表示不过滤,if(len($area)==0,nofilter,$area)表示参数area为空,就不过滤,若不为空则以参数值进行过滤;if(len($province)==0,nofilter,$province)意义相同。
注:此方法无需修改下拉复选框控件的返回值类型及分隔符,使用默认的返回值类型-数组即可。
5. 效果预览编辑
1)PC端预览效果
点击分页预览,不输入参数值后,直接点击查询,效果如上图。
2)移动端预览效果
6. 已完成模板编辑
1)方法一
已完成模版,可参考:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Parameter\下拉复选框实现参数为空选择全部-数据集参数.cpt
2)方法二
已完成模版,可参考:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Parameter\下拉复选框实现参数为空选择全部-报表参数.cpt
下拉复选框参数为空选择全部 在线视频学习 请查看【参数为空选择全部】