如何使用类似“PrintWhenExpression”隐藏表格组件中的表格页脚?
问题描述:
我正在使用Jaspersoft Studio,并且我在其中制作了一张Jasper报告,并在其中包含多个页脚(数据集组)。这些页脚包含不同细节/组中计算的不同总和。如何使用类似“PrintWhenExpression”隐藏表格组件中的表格页脚?
根据报告输入参数($P{myRepMode} == 1
),需要显示一些页脚。
理想情况下,我希望组页脚有一个PrintWhenExpression
字段,但不幸的是,Jasper Reports没有提供。样式(条件)似乎不允许设置元素高度。在单元格中隐藏文本会将该行留空而仍占用空间。
如何在条件下隐藏桌脚?
P.S.我知道我可以将总和计算移动到查询数据集中,以便一次返回所有内容,并根据一些提示格式化单元格,但这会污染非数据列/行的数据,并且还需要额外的工作。
答
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的:表。
@AlexK我正在使用Jaspersoft Studio,并希望Studio解决方案超过手动XML编辑(如果可能),因此标签。 – Kromster
Jaspersoft Studio只是一个IDE,该解决方案不依赖于IDE –
@AlexK解决方案在这个IDE中将更加有利。特别是如果在这个IDE中进一步编辑不会与它冲突或破坏它。 – Kromster