2

我的问题是,即使该行是空白的,它仍会占用乐队高度的空间,因此在下一个乐队之前存在比平时更大的间隙。

我的 jasper 文件中的乐队看起来像这样:

<band height="30" splitType="Stretch">
    <staticText>
        <reportElement uuid="274e9a4d-939e-46f6-8508-52ebc9051180" x="0" y="10" width="515" height="20" isRemoveLineWhenBlank="true" forecolor="#111B3F">
            <printWhenExpression><![CDATA[$F{projects_count} != "0"]]></printWhenExpression>
        </reportElement>
        <textElement verticalAlignment="Top">
            <font fontName="Arial Black" size="14" pdfFontName="jasper/fonts/ARIBLK.TTF"/>
        </textElement>
        <text><![CDATA[Project experience]]></text>
    </staticText>
</band>

这里我有文本 staticText 应该只在<![CDATA[$F{projects_count} != "0"]]>. 这行得通。在我还设置的 reportElement 上isRemoveLineWhenBlank="true"

由于高度设置为 30,它仍然在我的报告中占用空间,而且我似乎无法弄清楚如何不仅不显示文本,而且如果不满足某些条件,还可以以某种方式删除带。

4

2 回答 2

5

Hendri——我知道您已经在乐队的文本字段上设置了 Print When 表达式吗?改为为整个详细信息区域设置 Print When 表达式。

 <band height="30">
     <printWhenExpression><![CDATA[$F{projects_count} != "0"]]></printWhenExpression>
            <textField> {... etc}
于 2013-05-06T12:49:38.353 回答
0

我在发布后立即找到了解决方案。

它确实有效,但因为我的高度为 30,而我的 staticText 从 y=10 开始只有 20 的高度,所以有 10 个像素(y=0-9)不会被删除。我通过将高度更改为 20 并将 y 更改为 0 来解决此问题,如下所示:

<band height="20" splitType="Stretch">
    <staticText>
        <reportElement uuid="274e9a4d-939e-46f6-8508-52ebc9051180" x="0" y="0" width="515" height="20" isRemoveLineWhenBlank="true" forecolor="#111B3F">
            <printWhenExpression><![CDATA[$F{projects_count} != "0"]]></printWhenExpression>
        </reportElement>
        <textElement verticalAlignment="Top">
            <font fontName="Arial Black" size="14" pdfFontName="jasper/fonts/ARIBLK.TTF"/>
        </textElement>
        <text><![CDATA[Project experience]]></text>
    </staticText>
</band>
于 2013-05-06T12:56:24.690 回答