J'utilise iReport avec pour afficher les données d'un net.sf.jasperreports.engine.data.JRTableModelDataSource
dans un tableau. J'utilise TableModelDataSource, car je dois utiliser Java comme source de données.iReport Cell Spanning dans le composant Table
je maintenant obtenu le code suivant, ce qui fonctionne très bien:
<?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="controltest" pageWidth="595" pageHeight="842" columnWidth="535" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<property name="ireport.zoom" value="1.3310000000000022"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="276"/>
<property name="ireport.callouts" value="##Wed Dec 05 08:22:05 CET 2012"/>
<subDataset name="plantsResultTable">
<field name="COLUMN_0" class="java.lang.String"/>
<field name="COLUMN_1" class="java.lang.String"/>
<field name="COLUMN_2" class="java.lang.String"/>
<field name="COLUMN_3" class="java.lang.String"/>
<field name="COLUMN_4" class="java.lang.String"/>
<field name="COLUMN_5" class="java.lang.String"/>
<field name="readActualSupply" class="java.lang.String"/>
<group name="supplyGroup">
<groupExpression><![CDATA[$F{readActualSupply}]]></groupExpression>
</group>
</subDataset>
<field name="remotelyControlledSupply" class="java.lang.String"/>
<field name="thirdPartyAccess" class="java.lang.String"/>
<field name="plantsResultTable" class="net.sf.jasperreports.engine.JRDataSource"/>
<background>
<band/>
</background>
<pageHeader>
<band/>
</pageHeader>
<detail>
<band height="675">
<frame>
<reportElement x="0" y="250" width="555" height="239"/>
<componentElement>
<reportElement key="table 2" x="0" y="17" width="555" height="222"/>
<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="plantsResultTable">
<dataSourceExpression><![CDATA[$F{plantsResultTable}]]></dataSourceExpression>
</datasetRun>
<jr:column width="90">
<jr:columnHeader height="30">
<staticText>
<reportElement x="0" y="0" width="90" height="30"/>
<textElement/>
<text><![CDATA[COLUMN_0]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell height="20">
<textField pattern="">
<reportElement x="0" y="0" width="90" height="20">
<printWhenExpression><![CDATA[$V{supplyGroup_COUNT} == 1]]></printWhenExpression>
</reportElement>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{COLUMN_0}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="90">
<jr:columnHeader height="30">
<staticText>
<reportElement x="0" y="0" width="90" height="30"/>
<textElement/>
<text><![CDATA[COLUMN_1]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell height="20">
<textField>
<reportElement x="0" y="0" width="90" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{COLUMN_1}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="90">
<jr:columnHeader height="30">
<staticText>
<reportElement x="0" y="0" width="90" height="30"/>
<textElement/>
<text><![CDATA[COLUMN_2]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell height="20">
<textField>
<reportElement x="0" y="0" width="90" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{COLUMN_2}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="90">
<jr:columnHeader height="30">
<staticText>
<reportElement x="0" y="0" width="90" height="30"/>
<textElement/>
<text><![CDATA[COLUMN_3]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell height="20">
<textField>
<reportElement x="0" y="0" width="90" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{COLUMN_3}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="90">
<jr:columnHeader height="30">
<staticText>
<reportElement x="0" y="0" width="90" height="30"/>
<textElement/>
<text><![CDATA[COLUMN_4]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell height="20">
<textField>
<reportElement x="0" y="0" width="90" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{COLUMN_4}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="90">
<jr:columnHeader height="30">
<staticText>
<reportElement x="0" y="0" width="90" height="30"/>
<textElement/>
<text><![CDATA[COLUMN_5]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell height="20">
<textField>
<reportElement x="0" y="0" width="90" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{COLUMN_5}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
</jr:table>
</componentElement>
</frame>
</band>
</detail>
<columnFooter>
<band/>
</columnFooter>
<pageFooter>
<band/>
</pageFooter>
<summary>
<band/>
</summary>
</jasperReport>
Ce que je dois savoir est maintenant
- est-il un moyen de centrer la valeur COLUMN_0 verticalement (réglage alignement vertical "centre"). Je suppose que ça doit aller par sth comme
if $V{supplyGroup_COUNT} == $V{supplyGroup_SIZE}/2
. J'ai la table montrée sous "réel", mais je veux dynamiquement ressembler à "cible". - Existe-t-il un moyen d'imprimer une autre valeur COLUMN_0 si la table a un saut de page. C'est le tableau qui commence à la page 1 et se termine à la page 2 qui se termine là. Puis-je imprimer une valeur COLUMN_0 à la page 1 et à la page 2? J'ai mis un
<printWhenExpression><![CDATA[$V{supplyGroup_COUNT} == 1 || $P{hasPageBreak}.equals("1"))]]></printWhenExpression>
à textField de ma table, mais le compilateur se plaint de ne pas être en mesure de trouver le paramètre hasPageBreak. Pour l'instant je compte juste les articles dans ma table et mets un autre "texte" visible si $ V {supplyGroup_COUNT} == 20 et s'il y a une nouvelle page.
3. Y at-il un moyen de forcer une table à briser après un certain nombre d'articles? J'ai un texte qui suit la table. J'aimerais toujours avoir au moins une partie (la fin) de la table avec le texte suivant. Ou dois-je utiliser deux tables distinctes?
'y at-il un moyen de centrer le COLUMN_0 value' - que voulez-vous dire? –
@AlexK J'ai modifié mon message. Je voulais dire l'alignement vertical de la valeur COLUMN_0. Dans votre solution pour la question de l'utilisateur1264222, vous avez utilisé l'expression '$ V {supplyGroup_COUNT} == 1' afin que la valeur soit écrite dans la première cellule. Je voudrais l'afficher au centre. – Torsten
En d'autres termes, vous voulez appliquer un style (alignement vertical) au champ dans certains cas (style conditionnel). Ai-je raison? –