【问题标题】:How to remove null/empty column from crosstab?如何从交叉表中删除空/空列?
【发布时间】:2017-09-15 23:48:00
【问题描述】:

我的布局中有一个交叉表元素。列组中的一个值为空,我不想在输出中显示该列的空值。

我尝试过检查空值时的空白和修改表达式属性时的打印。但它所做的只是用空白替换空值,但该列仍然出现在输出中。

电流输出

预期输出

【问题讨论】:

    标签: jasper-reports crosstab


    【解决方案1】:

    要将列标题中的名称从 null 更改为其他名称,您可以修改 bucketExpression

    <bucketExpression><![CDATA[($F{myField==null}?"New name":$F{myField})]]></bucketExpression>
    

    使用它,您还可以将值移动到新的存储桶(列)中。

    如果您想删除整个列,AFIK 没有其他方法可以在将数据源中的空值传递给交叉表之前过滤掉它。

    选项有:

    • 如果您使用的是 sql 数据源,只需在 where 子句中添加该字段,对于 mysql,这将类似于 WHERE myField is not null

    • 在您的数据源上使用 filterExpression,例如。

      <filterExpression><![CDATA[($F{myField}!=null)]]></filterExpression> 
      
    • 开发一个自定义 JRDatasource 包装数据源,如果记录具有 null 值,则忽略并跳转。

    结论:要删除列,您需要先从数据源中删除记录,然后再将其传递给交叉表。

    【讨论】:

      猜你喜欢
      • 2015-09-20
      • 1970-01-01
      • 2014-12-17
      • 2021-07-11
      • 2017-11-02
      • 2022-11-01
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多