2017-09-15 79 views
0

我的布局中有一个交叉表元素。列组中的一个值为null,我不想在输出中显示具有空值的列。如何从交叉表中删除空/空列?

我试过了检查空值时空值和修改打印时的表达属性。但它所做的只是将空值替换为空值,但列仍在输出中。

电流输出

enter image description here

预计输出

enter image description here

回答

1

从空更改列标题名称别的东西,你可以修改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价值。

结论:要删除​​列,你需要你将它传递给交叉之前从数据源中删除记录。