我在 Jasper
中创建了一个包含四个部分的报告 . 每个部分都包含一个文本字段作为 Headers 和一个子报表 . 子报表可以为空 . 如果它为空,则使用“删除行空白时隐藏” . 到目前为止这个工作 . 现在,如果隐藏子报表,也应隐藏相应的 Headers 文本字段 .
我尝试了很多东西,但无法提出解决方案 . 例如 . 表达时使用打印: new Boolean ($P{otherField}.read() != -1)
. 这从未显示过 Headers .
我也试图在我的Java程序中隐藏 Headers ,但找不到合适的API命令 . 我猜 getBands()[x].getChildren()[y]
引导我到正确的 Headers ,但我无法隐藏它 .
还有其他想法吗?
2 回答
您应该将 Headers 文本 inside 放在子报表中,例如
title
波段In subreport
确保
jasperReport
标记上没有whenNoDataType属性,因此它使用默认值NoPages
如果子报表没有记录,则属性
whenNoDataType=NoPages
(默认值)将确保不返回任何内容,您将看不到 Headers .如果您需要在子报表之外(出于某些奇怪的原因)将记录计数从子报表传递回主报表,并使用带有
printWhenExpression
和evalutationTime="Report"
的文本字段有关如何传回报告计数的一些其他详细信息,请查看此信息 .
How to get report_count from subreport in iReport
谢谢您的帮助 . 我终于可以通过在 Headers 中的“Print When Expression”下使用以下表达式来解决它:
哪里
是子报表的表达式 .