页脚分为更多部分

时间:2012-10-16 14:16:15

标签: jasper-reports ireport footer sections

我知道 Crystal Reports 提供了将页脚分割成可根据某些条件打印的部分(a,b部分......)的可能性。如果条件1 ,则打印部分a,否则打印部分b,依此类推。

我必须使用 iReport 制作类似的东西,我不知道如何。我找不到制作更多部分的选项。有人可以帮我吗?

1 个答案:

答案 0 :(得分:2)

要扩展并建议对Alex评论进行扩展,您可以在页脚的frame内排列每个部分。然后为每个帧设置printWhenExpression而不是一堆元素。

例如:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="report3" language="groovy" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="0" bottomMargin="0" uuid="35abc101-1375-42c5-9f5f-2eb3542ca382">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <parameter name="footerPrint" class="java.lang.String">
        <defaultValueExpression><![CDATA["1"]]></defaultValueExpression>
    </parameter>
    <pageFooter>
        <band height="51">
            <frame>
                <reportElement uuid="c8bef919-0e83-4d72-9b25-1a7e0aa6b82b" x="0" y="0" width="555" height="20">
                    <printWhenExpression><![CDATA[$P{footerPrint}.equals("1")]]></printWhenExpression>
                </reportElement>
                <staticText>
                    <reportElement uuid="4ad1f177-9e43-4d9f-8f05-012090c33193" x="0" y="0" width="100" height="20"/>
                    <textElement/>
                    <text><![CDATA[Footer Print: 1]]></text>
                </staticText>
            </frame>
            <frame>
                <reportElement uuid="c8bef919-0e83-4d72-9b25-1a7e0aa6b82b" x="0" y="0" width="555" height="20">
                    <printWhenExpression><![CDATA[$P{footerPrint}.equals("2")]]></printWhenExpression>
                </reportElement>
                <staticText>
                    <reportElement uuid="4ad1f177-9e43-4d9f-8f05-012090c33193" x="0" y="0" width="100" height="20"/>
                    <textElement/>
                    <text><![CDATA[Footer Print: 2]]></text>
                </staticText>
            </frame>
        </band>
    </pageFooter>
</jasperReport>

将帧设置为相同的尺寸,并将其余设置为完​​全相同的x / y坐标。所以基本上它们是重叠的,但如果你正确地表达了表达式,那么一次只会显示一个表达式。

当然另一个选择是为每个元素设置表达式,我只是觉得这样更容易。