Jasper 报告 - 仅当页面至少容纳一个详细信息时才打印组标题

问题描述 投票:0回答:3

我正在创建一份 jasper 报告,其中包含一些非常具体的要求。

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

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

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

此时我注意到该组有一个名为“开始新页面的最小高度”的属性。这对于详细信息很有用 然而,恒定高度的部分...

  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
3个回答
0
投票

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

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

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

希望这有帮助!


0
投票

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

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

我希望这有帮助。


0
投票

我也遇到过类似的情况,一份包含大量子报告的报告。每个子报表由组标题和详细信息区域组成。

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

我解决的方法如下:

主要报告,我以前有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”

© www.soinside.com 2019 - 2024. All rights reserved.