2008-12-09 7 views
4

Les sous-rapports se chevauchent dans cet exemple - qu'est-ce que je fais de mal? Le second est censé "flotter" en dessous du premier, avec son attribut "y" ignoré, mais ce n'est pas le cas.JasperReports: les sous-rapports ne fonctionnent pas avec positionType = 'Float'

Merci!

<?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="report name" pageWidth="595" pageHeight="842" columnWidth="535" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20"> 
    <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false"> 
     <defaultValueExpression><![CDATA["C:\\reportFolder\\"]]></defaultValueExpression> 
    </parameter> 
    <background> 
     <band/> 
    </background> 
    <detail> 
     <band height="200"> 
      <subreport> 
       <reportElement positionType="FixRelativeToTop" x="19" y="0" width="200" height="50"/> 
       <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource()]]></dataSourceExpression> 
       <subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "report1.jasper"]]></subreportExpression> 
      </subreport> 
      <subreport> 
       <reportElement positionType="Float" mode="Transparent" x="19" y="20" width="200" height="50" backcolor="#FFFF66"/> 
       <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource()]]></dataSourceExpression> 
       <subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "report1.jasper"]]></subreportExpression> 
      </subreport> 
     </band> 
    </detail> 
</jasperReport> 

Répondre

12

J'ai eu la réponse! (Je suis celui qui a demandé, IP différent je suppose) Selon la documentation, l'élément flottant aurait son attribut y ignoré. J'avais pris cela littéralement, essayé des valeurs arbitraires pour y et vu que chaque fois que l'élément était placé à la position spécifiée.

Mais non, vous devez positionner y pour positionner l'élément juste en dessous du précédent, en fonction de la valeur déclarée y et de la hauteur, même si sa hauteur réelle peut être étirée lorsqu'elle est remplie de données. Dans mon exemple de code, le deuxième sous-rapport aurait dû avoir y = "50".

De plus, je vois que la hauteur déclarée d'un élément est prise comme une hauteur minimale. Si le sous-rapport réel est plus court que la hauteur, l'élément englobant ne sera pas réduit, il serait donc judicieux de définir la hauteur minimale attendue pour les éléments qui pourraient être étirés.

2

Vous avez raison, mais vous avez besoin de plus. Vous devez supprimer les marges des sous-rapports.

  • À partir du menu -> Format -> Supprimer les marges rapport dans le menu

  • Format -> Page Format -> Faire des marges 0

Questions connexes