2010-04-27 9 views
6

Vorrei utilizzare il nuovo componente di tabella aggiunto a JasperReports 3.7.2 con i plugin jasper di Grails. Trovo questo nuovo componente utile per generare tabelle.Come utilizzare il componente tabella aggiunto a JasperReports 3.7.2 con i plugin jasper di Grails?

Ho definito il set di dati Tabella 1 e alcuni campi (es: $ F {nome}), problema, tutti i valori dei campi sono nulli. Ho anche definito i campi (non associati alla tabella) e ottengo dei valori.

Ecco il mio codice tavolo:

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

credo, il mio problema è dovuto a questa parte (sto usando JREmptyDataSource):

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

Ma come posso ottenere il mio <MODEL_DATA> con Componente della tabella?
(es: Gruppo (regolatore: 'Diaspro', azione: 'index', modello: [dati: <MODEL_DATA>], params: params))

risposta

5

Ecco la soluzione:

Conservare:

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

ed impiego:

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

componente Tabella ora utilizzare il dataSource attuale (il vostro MODEL_DATA)!

+2

E se si desidera utilizzare il set di dati secondario? – monksy

1

Sopra la risposta funziona bene per le espressioni SQL, ma se si utilizza un'origine dati XML, anche la query xPath deve essere inclusa, proprio come nel set di dati principale.

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

Ho appena provato ad usarlo con l'origine dati XML, e seguendo ciò che ha detto @ fabien-barbier, ottengo solo una riga nella tabella, ed è l'ultima. Non sono sicuro di aver compreso il tuo esempio per includere la query XPath, potresti essere più specifico ...? – Less

Problemi correlati