【问题标题】:How to prevent page split between details band in JasperReports如何防止 JasperReports 中详细信息带之间的页面拆分
【发布时间】:2017-02-15 01:59:45
【问题描述】:

我有一份包含两个详细信息带的报告。第一个波段显示图像,第二个显示其文件名。但是,有时,图像会以这样一种方式适合页面,以至于下面的文本行没有位置了。而且文件名会转到下一页,看起来很傻:

  some other contents

     +-------------------+
     |                   |
     |                   |       Page 1
     |                   |
     |                   |
     +-------------------+

  ----------------------------------------------

     foto.jpg                    Page 2

有没有办法防止 JR 出现这种分裂? IE。我希望在记录之间发生页面拆分,而不是在同一记录的不同详细信息带之间发生。在上面的用例中,图像及其文件名都应该转到下一页:

  some other contents            Page 1

  ----------------------------------------------

     +-------------------+
     |                   |
     |                   |
     |                   |       Page 2
     |                   |
     +-------------------+
     foto.jpg

在第二个细节带上将拆分类型设置为“预防”似乎没有帮助...

【问题讨论】:

    标签: jasper-reports


    【解决方案1】:

    您可以在报告中添加一个“虚拟”组。

    使用常量表达式添加一个组(如true)。

    取消勾选选项Add the group headerAdd the group footer。你可能不需要这些。

    现在有两种方法可以防止分裂:

    1. 在组选项下,勾选名为Keep Together 的属性。在 Jasper Reports 的早期版本中,它并不总是能正常工作。也许现在好多了。
    2. 在组选项下,有一个名为Min Height To Start New Page 的属性。将其值设置为两个细节带的高度之和。然后,无论何时打印该组,Jasper Reports 都会检查页面中的剩余空间是否大于或等于该属性。如果没有,它将在新页面上打印该组。

    【讨论】:

    • 谢谢你,“保持在一起”工作得很好。在我的情况下,由于拉伸(即事先不知道所需的高度),最小高度实际上不是一个选项。
    • 您的回答拯救了我的一天!谢谢!我将添加您答案的 XML 版本。
    【解决方案2】:

    更新: 使用新的detail band 和设置 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>
    
    • 问:如何指定哪些项目属于组?
    • 答:你不能。此报告(或子报告)中的所有项目都将属于同一组。因此,也许您需要将子报表拆分为多个(我的情况,顺便说一句)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-10
      • 2016-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多