【问题标题】:Jasper Report - Only Print Group Header When At Least One Detail Fits On PageJasper 报告 - 仅当至少一个细节适合页面时才打印组标题
【发布时间】:2014-12-10 15:24:02
【问题描述】:

我正在创建一个包含一些非常具体要求的碧玉报告。

  1. 报告包含一个组。
  2. 组标题必须打印在组的开头,也必须打印在新页面上。

这不是问题,因为我只需告诉它“在每一页上重新打印页眉”。到目前为止一切顺利。

  1. 不允许在页面中拆分详细信息部分。
  2. 组标题不得打印在页面底部,除非至少有一个详细信息部分适合。 (可以改写为:组标题必须仅在至少一个详细部分适合时打印)

此时我注意到该组有一个名为“Min Height To Start New Page”的属性。这对细节很有用 然而,恒定高度的部分......

  1. 细节部分是动态高度。

我曾尝试在组中使用“保持在一起”,但如果第一个组较小,而第二个组较大,则会在页面上留下太多空白空间。它被拒绝作为解决方案。

考虑到这些要求。当页面无法容纳任何详细信息条目时,我要做的就是不打印组标题。

我怀疑它在填写报告时可能不知道详细信息部分的高度,直到它填写完毕,到那时为时已晚。我希望我错了。

我已尝试通过两种方式重新创建此报告:

  1. 包含组和详细信息部分的报告。
  2. 一个主报表,其中包含一个用于组的子报表,在子报表中另一个子报表用于详细信息。

这两种方法都使我得到了相同的结果。

视觉上,如果这是我的数据:

Province - Ontario
  City - Ottawa
  City - Toronto
Province - Nova Scotia
   City - Halifax
   City - New Glasgow
Province - Quebec
   City - Montreal
   City - Quebec City

我可能会得到这个结果:

**Page 1**
Province - Ontario
  City - Ottawa
  City - Toronto
Province - Nova Scotia
   City - Halifax
   City - New Glasgow
Province - Quebec **<- This hanging header is unwanted**

**Page 2**
Province - Quebec
   City - Montreal
   City - Quebec City

我尝试了许多设置排列,将子报表放在不同的波段中,但我还没有找到可行的方法。我希望有人知道设置组合、将子报表放在不同的频段等,这样会起作用。

知道我该如何做到这一点吗?

【问题讨论】:

    标签: jasper-reports report reporting


    【解决方案1】:

    您无法真正阻止这种情况,因为您的详细信息带可能不止一页。不过,您可以尝试几个选项。

    1. 转到组属性并将“开始新页面的最小高度”设置为 200 或满足您需要的值。

    2. 其次,您可以检查“在每一页上打印组标题”,这样如果您的详细信息部分超过一页,则标题会重复。

    希望这会有所帮助!

    【讨论】:

    • 感谢您的回答,但您重申了我在问题中强调的两件事,因为我已经在使用或已经尝试过。请参阅我列出我的要求 1-5 的突出显示部分。
    【解决方案2】:

    要回答 #4,防止在页面末尾出现没有详细信息的组标题,此解决方案可能有效。你在#5 中说细节部分的高度是动态的。如果您指的是细节带的高度,那么我没有一个好的解决方案。如果您指的是组的详细信息部分中的详细信息条目数,则以下解决方案应该有效。

    与 Fatih 所说的类似,将“开始新页面的最小高度”设置为组标题带的高度像素数,加上细节带的高度像素数。如果组标题和单个详细信息带没有空间,这将强制组标题仅在下一页上打印。

    我希望这会有所帮助。

    【讨论】:

    • 不幸的是在#5中我指的是细节带的高度。
    【解决方案3】:

    我在一份包含大量子报告的报告中遇到了类似的情况。每个子报表都包含一个组标题和详细信息带。

    我遇到的问题有时组标题出现在一个页面中,然后其余空间将是一个空白,子报告的详细信息将出现在下一页中。我的子报表详细信息是高度动态调整大小。

    我解决的方法如下:

    主报告,我以前有 splitType="Stretch",我将其更改为 splitType="Prevent"

    <detail>
        <band height="20" splitType="Prevent">
           <!-- this part contains all my subreports -->
        </band>
    </detail>
    

    对于我的子报告,我曾经删除过 minHeightToStartNewPage="200"(也使用 keepTogether="true" 对我不起作用)

    <group name="titleGroup">
        <groupHeader>
            <band height="20" splitType="Stretch">
    

    对于我的子报告中的详细波段,splitType 保持为“Stretch”

    【讨论】:

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