2010-04-27 5 views
6

Je voudrais utiliser un nouveau composant de table ajouté à JasperReports 3.7.2 avec des plugins jasper grails. Je trouve ce nouveau composant utile pour générer des tables.Comment utiliser le composant de table ajouté à JasperReports 3.7.2 avec des plugins jasper grails?

J'ai défini l'ensemble de données Table 1, et certains champs (ex: $ F {nom}), problème, toutes mes valeurs de champs sont nulles. J'ai aussi définir des champs (non attachés à table), et j'ai des valeurs.

Voici mon code de table:

<subDataset name="Table Dataset 1"> 
    <field name="name" class="java.lang.String"/> 
    <field name="signal" class="java.lang.Double"/> 
    ... 
</subDataset> 

<componentElement> 
<reportElement key="table" style="table" x="0" y="0" width="802" height="50"/> 
<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd"> 
<datasetRun subDataset="Table Dataset 1"> 
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource(1)]]></dataSourceExpression> 
</datasetRun> 
<jr:column width="90"> 
<jr:columnHeader style="table_CH" height="30" rowSpan="1"> 
<staticText> 
<reportElement x="0" y="0" width="90" height="30"/> 
<textElement/> 
<text><![CDATA[Name]]></text> 
</staticText> 
</jr:columnHeader> 
<jr:detailCell style="table_TD" height="20" rowSpan="1"> 
<textField> 
<reportElement x="0" y="0" width="90" height="20"/> 
<textElement/> 
<textFieldExpression class="java.lang.String"><![CDATA[$F{name}]]></textFieldExpression> 
</textField> 
</jr:detailCell> 
</jr:column> 
    ... 

Je suppose, mon problème est dû à cette partie (j'utilise JREmptyDataSource):

<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource(1)]]></dataSourceExpression> 

Mais comment puis-je obtenir mon <MODEL_DATA> avec Composant de table?
(par exemple: chaîne (régulateur: 'jaspe', action: 'index', modèle: [data: <MODEL_DATA>], params: params))

Répondre

5

Voici la solution:

garder:

<subDataset name="Table Dataset 1"> 
    <field name="name" class="java.lang.String"/> 
    <field name="signal" class="java.lang.Double"/> 
    ... 
</subDataset> 

et utilisation:

<dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression> 

composant Table va maintenant utiliser votre dataSource réelle (votre MODEL_DATA)!

+2

Et si vous souhaitez utiliser l'ensemble de données secondaire? – monksy

1

La réponse ci-dessus fonctionne très bien pour les expressions SQL, mais si vous utilisez une source de données XML, la requête xPath doit également être incluse, comme avec l'ensemble de données principal.

<subDataset name="Tickets"> 
    <field name="barcode" class="java.lang.String"> 
     <fieldDescription><![CDATA[barcode]]></fieldDescription> 
    </field> 
</subDataset> 
+0

J'ai juste essayé de l'utiliser avec une source de données XML, et après ce que @ fabien-barbier a dit, je n'ai qu'une seule ligne dans la table, et c'est la dernière. Je ne suis pas certain de comprendre votre exemple d'inclusion de la requête XPath, pourriez-vous être plus précis ...? – Less

Questions connexes