2010-12-30 5 views
7

J'essaie de générer un rapport contenant une table. Ce sont les parties importantes de la jrxml:Composant de table Jasper

<jasperReport 
    <subDataset name="Table Dataset 1"> 
     <field name="field1" class="java.lang.String"/> 
    </subDataset> 
    <summary> 
     <jr:table> 
      <datasetRun subDataset="Table Dataset 1"> 
      <dataSourceExpression> 
         <![CDATA[$P{REPORT_DATA_SOURCE}]]> 
       </dataSourceExpression> 
      </datasetRun> 
      <jr:column width="90"> 
       <jr:columnHeader>...</jr:columnHeader> 
       <jr:detailCell height="20"> 
       <textField> 
       <textFieldExpression class="java.lang.String"> 
          <![CDATA[$F{territory}]]> 
         </textFieldExpression> 
       </textField> 
      </jr:detailCell> 
      </jr:column> 
     <jr:table> 
    </summary> 
</jasperReport> 

Le type de source de données que je passe le rapport est un JRBeanArrayDataSource, qui semble être ok, parce que les données apparaissent dans le rapport (si j'utilise $ F {field1} dans le maître - en dehors de la table).

Voyez-vous quelque chose qui ne va pas dans la façon dont j'utilise le composant de table? Je ne vois aucune erreur ... mais la table n'est pas affichée ... seulement une ligne horizontale au lieu de la table.

+0

Il n'est pas clair quelle est la source de données, le BeanArray est le même que REPORT_DATA_SOURCE? – medopal

Répondre

6

J'ai eu le même problème et a trouvé la solution ici https://web.archive.org/web/20111130110022/http://thilosdevblog.wordpress.com/2011/03/27/beans-in-jasperreports4/

la source de données de table doit ressembler à ceci:

<datasetRun subDataset="TableDataset"> 
    <datasetParameter name="REPORT_DATA_SOURCE"> 
     <datasetParameterExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></datasetParameterExpression> 
    </datasetParameter> 
</datasetRun> 

Je me demande pourquoi ce genre comment les choses ne sont pas dans la FAQ jaspe/iReport !

+0

Je n'ai pas eu la chance de tester votre solution, mais cela a fonctionné pour moi: 1) Wrapped JRBeanArrayDataSource dans un JRMapArrayDataSource 2) Je l'ai déréférencé comme un champ: 3) Utilisé comme ceci: . Votre solution semble juste par rapport à cela, mais malheureusement je ne peux pas le confirmer pour travailler dans mon cas particulier. J'ai décrit ma solution de contournement comme un dernier recours pour toute personne bloquée sur ce problème. – teo