Как использовать компонент таблицы, добавленный в JasperReports 3.7.2, с плагинами Grails jasper?

Я хотел бы использовать новый компонент таблицы, добавленный в JasperReports 3.7.2 с плагинами Grails jasper. Я считаю этот новый компонент полезным для создания таблиц.

Я определил набор данных таблицы 1 и некоторые поля (например: $ F {имя}), проблема, все значения моих полей равны нулю. Я также определяю поля (не прикрепленные к таблице), и я получаю значения.

Вот мой код таблицы:

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

Я думаю, моя проблема связана с этой частью (я использую JREmptyDataSource):

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

Но как я могу получить свой <MODEL_DATA> с компонентом таблицы?
(например: цепочка (контроллер: 'jasper', действие: 'index', модель: [данные: <MODEL_DATA>], параметры: параметры))


person Fabien Barbier    schedule 27.04.2010    source источник


Ответы (2)


Вот решение:

Хранить :

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

и используйте:

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

Компонент таблицы теперь будет использовать ваш фактический источник данных (ваш MODEL_DATA)!

person Fabien Barbier    schedule 30.04.2010
comment
Что делать, если вы хотите использовать вторичный набор данных? - person monksy; 11.03.2011

Приведенный выше ответ отлично работает для выражений SQL, но если вы используете источник данных XML, запрос xPath также должен быть включен, как и в случае с основным набором данных.

<subDataset name="Tickets">
    <field name="barcode" class="java.lang.String">
        <fieldDescription><![CDATA[barcode]]></fieldDescription>
    </field>
</subDataset>
person ianaré    schedule 09.11.2011
comment
Я только что попытался использовать его с источником данных XML, и, следуя тому, что сказал @fabien-barbier, я получаю только одну строку в таблице, и она последняя. Я не совсем уверен, что понимаю ваш пример включения запроса XPath, не могли бы вы быть более конкретным...? - person Less; 11.11.2011