我正在打印一个表(数组列表),一列将包含所有行的相同值,这些值将作为参数传递给report。我试图遍历列表并打印如下所示的参数但没有成功。
<staticText>
<reportElement style="table_CH" x="948" y="490" width="54" height="20" backcolor="#CCCCCC" uuid="5f8ded52-e8fd-4fd0-8ea3-2b0aaed76545"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font size="7" isBold="true" isItalic="true" isUnderline="false"/>
</textElement>
<text><![CDATA[Total from stock]]></text>
</staticText>
<componentElement>
<reportElement x="950" y="510" width="51" height="20" uuid="6dfca79b-f554-41e3-b7ca-c6694759debd">
<property name="net.sf.jasperreports.export.headertoolbar.table.name" value=""/>
</reportElement>
<jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Vertical">
<datasetRun subDataset="dataset1" uuid="2f211526-7be4-45d9-a026-e542c773e07a">
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{this_is_my_array_list})]]></dataSourceExpression>
</datasetRun>
<jr:listContents height="20" width="51">
<textField>
<reportElement x="0" y="0" width="51" height="20" uuid="db47b136-15c8-44aa-b694-d396043c2b82"/>
<textElement textAlignment="Center">
<font size="8"/>
</textElement>
<textFieldExpression><![CDATA[$P{this_is_my_constant_parameter_string}.toString())]]></textFieldExpression>
</textField>
</jr:listContents>
</jr:list>
</componentElement>
答案 0 :(得分:1)
放置在列表中的元素在列表使用的子数据集的上下文中进行评估(在您的情况下,名为 dataset1 的子数据集)。报告中定义的参数是主数据集的一部分,不会自动与子数据集共享。
如果需要在列表中显示报表参数,则必须在子数据集中定义参数,并将报表参数的值作为数据集运行的一部分传递给它。您可以对subdataset参数或其他名称使用相同的名称(如下所示)。
这样的事情:
<subDataset name="dataset1" uuid="1a45bd64-6c6a-4b66-a676-db452e27f7a6">
<!-- subdataset parameter -->
<parameter name="this_is_my_subdataset_parameter"/>
...
</subDataset>
<!-- report parameter -->
<parameter name="this_is_my_constant_parameter_string"/>
...
<c:list>
<!-- pass the value to the subdataset parameter -->
<datasetRun subDataset="dataset1">
<datasetParameter name="this_is_my_subdataset_parameter">
<datasetParameterExpression><![CDATA[$P{this_is_my_constant_parameter_string}]]></datasetParameterExpression>
</datasetParameter>
...
</datasetRun>
<c:listContents>
<textField>
<reportElement/>
<!-- use the subdataset parameter in the list -->
<textFieldExpression><![CDATA[$P{this_is_my_subdataset_parameter}]]></textFieldExpression>
</textField>
...