如何防止 JasperReports 中详细信息带之间的页面拆分
How to prevent page split between details band in JasperReports
我有一份包含两个详细信息范围的报告。第一个波段显示图像,第二个波段显示其文件名。然而,在某些情况下,图像会以这样一种方式适合页面,以至于没有地方留给下面的文本行。文件名将转到下一页,看起来很傻:
some other contents
+-------------------+
| |
| | Page 1
| |
| |
+-------------------+
----------------------------------------------
foto.jpg Page 2
有没有办法防止 JR 中的这种分裂? IE。我希望页面拆分发生在记录之间,而不是发生在同一记录的不同详细信息带之间。在上面的用例中,图像及其文件名都应转到下一页:
some other contents Page 1
----------------------------------------------
+-------------------+
| |
| |
| | Page 2
| |
+-------------------+
foto.jpg
在第二个细节带上将拆分类型设置为 "Prevent" 似乎没有帮助...
您可以将 "dummy" 组添加到您的报告中。
添加一个包含常量表达式的组(如 true
)。
取消勾选选项 Add the group header
和 Add the group footer
。你可能不需要这些。
现在有两种方法可以防止分裂:
- 在组选项下,勾选名为
Keep Together
的 属性。它在早期版本的 Jasper Reports 中并不总是正常工作。也许现在好多了。
- 在组选项下,有一个名为
Min Height To Start New Page
的 属性。将其值设置为两个细节带的高度之和。然后,无论何时打印该组,Jasper Reports 都会检查页面中剩余的 space 是否大于或等于 属性。如果没有,它将在新页面上打印该组。
更新: 使用新的 细节带 并设置 splitType=Prevent 可以更容易地对对象进行分组。忘记下面的答案。
__
正在翻译 brunobastosg
对 XML 的回答,您可以将其添加到您的报告中:
<group name="DummyGroup" keepTogether="true">
<groupExpression><![CDATA[true]]></groupExpression>
</group>
请注意,元素 group
必须按特定顺序排列,例如:
<jasperReport ... >
....
<field ... />
<group name="DummyGroup" keepTogether="true">
<groupExpression><![CDATA[true]]></groupExpression>
</group>
<detail>
...
</jasperReport>
- 问:如何指定哪些项目属于组?
- 答:你不能。此报告(或子报告)中的所有项目都属于同一组。所以,也许你需要把你的子报告分成很多(我的情况,顺便说一句)
我有一份包含两个详细信息范围的报告。第一个波段显示图像,第二个波段显示其文件名。然而,在某些情况下,图像会以这样一种方式适合页面,以至于没有地方留给下面的文本行。文件名将转到下一页,看起来很傻:
some other contents
+-------------------+
| |
| | Page 1
| |
| |
+-------------------+
----------------------------------------------
foto.jpg Page 2
有没有办法防止 JR 中的这种分裂? IE。我希望页面拆分发生在记录之间,而不是发生在同一记录的不同详细信息带之间。在上面的用例中,图像及其文件名都应转到下一页:
some other contents Page 1
----------------------------------------------
+-------------------+
| |
| |
| | Page 2
| |
+-------------------+
foto.jpg
在第二个细节带上将拆分类型设置为 "Prevent" 似乎没有帮助...
您可以将 "dummy" 组添加到您的报告中。
添加一个包含常量表达式的组(如 true
)。
取消勾选选项 Add the group header
和 Add the group footer
。你可能不需要这些。
现在有两种方法可以防止分裂:
- 在组选项下,勾选名为
Keep Together
的 属性。它在早期版本的 Jasper Reports 中并不总是正常工作。也许现在好多了。 - 在组选项下,有一个名为
Min Height To Start New Page
的 属性。将其值设置为两个细节带的高度之和。然后,无论何时打印该组,Jasper Reports 都会检查页面中剩余的 space 是否大于或等于 属性。如果没有,它将在新页面上打印该组。
更新: 使用新的 细节带 并设置 splitType=Prevent 可以更容易地对对象进行分组。忘记下面的答案。
__
正在翻译 brunobastosg
对 XML 的回答,您可以将其添加到您的报告中:
<group name="DummyGroup" keepTogether="true">
<groupExpression><![CDATA[true]]></groupExpression>
</group>
请注意,元素 group
必须按特定顺序排列,例如:
<jasperReport ... >
....
<field ... />
<group name="DummyGroup" keepTogether="true">
<groupExpression><![CDATA[true]]></groupExpression>
</group>
<detail>
...
</jasperReport>
- 问:如何指定哪些项目属于组?
- 答:你不能。此报告(或子报告)中的所有项目都属于同一组。所以,也许你需要把你的子报告分成很多(我的情况,顺便说一句)