2017-10-20 240 views
3

我正在使用Jaspersoft Studio,并且我在其中制作了一张Jasper报告,并在其中包含多个页脚(数据集组)。这些页脚包含不同细节/组中计算的不同总和。如何使用类似“PrintWhenExpression”隐藏表格组件中的表格页脚?

根据报告输入参数($P{myRepMode} == 1),需要显示一些页脚。

理想情况下,我希望组页脚有一个PrintWhenExpression字段,但不幸的是,Jasper Reports没有提供。样式(条件)似乎不允许设置元素高度。在单元格中隐藏文本会将该行留空而仍占用空间。

如何在条件下隐藏桌脚?

P.S.我知道我可以将总和计算移动到查询数据集中,以便一次返回所有内容,并根据一些提示格式化单元格,但这会污染非数据列/行的数据,并且还需要额外的工作。

+0

@AlexK我正在使用Jaspersoft Studio,并希望Studio解决方案超过手动XML编辑(如果可能),因此标签。 – Kromster

+0

Jaspersoft Studio只是一个IDE,该解决方案不依赖于IDE –

+0

@AlexK解决方案在这个IDE中将更加有利。特别是如果在这个IDE中进一步编辑不会与它冲突或破坏它。 – Kromster

回答

0

AFIK您不能在jr:tableFooter上添加printWhenExpression接近您尝试实现的唯一解决方案是利用textFields的溢出能力。 (不考虑那个帖子阐述的JasperReport或JasperPrint在Java解决方案)

的方法是设置jr:tableFooter 1的高度,使用textField与身高1,您printWhenExpression并选择“溢出拉伸”

<jr:tableFooter height="1" rowSpan="1"> 
    <textField isStretchWithOverflow="true" isBlankWhenNull="false"> 
     <reportElement key="" x="0" y="0" width="90" height="1" isRemoveLineWhenBlank="true" uuid="9d1ad772-024d-4642-84b2-68654bf3752c"> 
      <printWhenExpression><![CDATA[MyExpression]]></printWhenExpression> 
     </reportElement> 
     <textFieldExpression><![CDATA["MyText"]]></textFieldExpression> 
    </textField> 
</jr:tableFooter> 

这将接近您想要的设计,如果没有文本框的高度将只有1,如果文本,它会显示所有文本。

不过,我个人不喜欢它,因为在IDE设计视野不会都看得到,我会考虑使用其他方法如textField使用float下表,groupFooter或更改为正常报表,而不是JR的:表。