下拉复选框参数为空选择全部

编辑
  • 文档创建者:cherishdqy
  • 浏览次数:11283次
  • 编辑次数:11次
  • 最近更新:Kevin-s 于 2019-07-03
  • 1. 描述

    下拉复选框参数为空选择全部 在线视频学习 请查看【参数为空选择全部】

    在使用参数进行过滤时,选择某个参数值后就会根据选择的值进行过滤,但是如何实现如下图效果即货主地区下拉复选框中不选择参数值时能够查询出数据表中的全部值呢?


    2. 模板准备

    2.1 新建数据集

    添加数据集 ds1,SQL 语句为:SELECT * FROM 订单

    2.2 报表设计

    在第一行添加表头,将数据集ds1的字段依次拖入单元格中,如下图所示:
    222

    2.3 添加参数控件

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

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

    222

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

    2.4 设置参数为空选择全部

    由于参数的定义有两种方式,因此下面我们分别介绍下参数为空选出全部值的做法。

    3. 方法一:通过数据集参数

    1)设置下拉复选框控件 area 的返回值类型为字符串,分隔符为','
    222

    2)将数据集 ds1 的 SQL 语句修改为:SELECT * FROM 订单 where 1=1${if(len(area) == 0,"","and 货主地区 in ('" + area + "')")}

    注:where 1=1表示条件永真,防止没有之后的参数条件时,where 多出而导致出错;len(area)==0 表示参数 area 为空;"and 货主地区='"+area+"'" 中间的 area 表示取参数值,'+' 为字符串拼接符号。

    ${if(len(area) == 0,"","and 货主地区 = '" + area + "'")} 表示若参数 area 为空就不进行过滤,若不为空则货主地区等于参数值。

    此处参数名 area 与参数面板中添加的下拉复选框控件 area 控件名一致,即将参数控件与数据集参数绑定到一起,实现参数的过滤。

    4. 方法二:通过报表参数

    1)双击 A2 单元格,选择过滤按钮,给 A2 单元格增加过滤条件:货主地区包含于公式:if(len($area)==0,nofilter,$area)

    222

    注: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


    下拉复选框参数为空选择全部 在线视频学习 请查看【参数为空选择全部】

    附件列表


    主题: 参数入门
    标签: 暂无标签 编辑/添加标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]