2012-10-16 4 views
0

Je sais que Crystal Reports offre la possibilité de découper le pied de page en sections (section a, section b, ...) imprimables selon certaines conditions. Si condition 1 est vrai puis imprimer la section a, sinon la section b et ainsi de suite.Pied de page divisé en plusieurs sections

Je dois faire quelque chose de similaire en utilisant iReport et je ne sais pas comment. Je ne trouve pas l'option de faire plus de sections. Quelqu'un pourrait-il m'aider, s'il vous plaît?

+1

Vous pouvez ajouter autant de * textField *, * frame * et d'autres éléments à cette bande que vous le souhaitez. Vous pouvez utiliser l'expression * textFieldExpression * et * printWhenExpression * pour déterminer ce que vous voulez afficher. –

Répondre

2

Pour développer et suggérer une extension du commentaire d'Alex, vous pouvez mettre en page chaque section que vous avez en tête dans un frame dans le pied de page. Définissez ensuite printWhenExpression pour chaque image au lieu d'un groupe d'éléments.

Par exemple:

<?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> 

Les cadres sont fixés aux mêmes dimensions et de repos sont fixées aux coordonnées exactes mêmes x/y. Donc, essentiellement, ils se chevauchent, mais si vous faites correctement les expressions, une seule sera affichée à la fois de toute façon.

Bien sûr, l'autre option consiste à définir l'expression pour chaque élément, je trouve juste que c'est plus facile.