2

我已经使用 ireport 4.5.0 中的表组件创建了表。我想在我的代码中通过 map 传递数据。所以我通过 Dataset Run 提供了数据源。在这一点上,我一直尝试通过给出“连接/数据源 exp”、“参数”和“参数映射 exp”,但我没有得到表格。我得到的只是一行,甚至没有空单元格。我也在子数据集和表格组件中创建了地图参数,我猜不出我错过了什么步骤。

子数据集

    <subDataset name="Table Dataset 2">
    <parameter name="Details" class="java.util.Map"/>
</subDataset>

表组件

  <componentElement>
            <reportElement key="table 1" style="table 1" x="0" y="0" width="555" height="230"/>
            <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 2">
                    <datasetParameter name="Details">
                        <datasetParameterExpression><![CDATA[$P{Details}.get("Name")]]></datasetParameterExpression>
                    </datasetParameter>
                </datasetRun>
                <jr:column width="25">
                    <jr:detailCell style="table 1_TD" height="44" rowSpan="1">
                        <staticText>
                            <reportElement x="0" y="0" width="25" height="44"/>
                            <textElement textAlignment="Center" verticalAlignment="Middle"/>
                            <text><![CDATA[1]]></text>
                        </staticText>
                    </jr:detailCell>
                </jr:column>
                <jr:column width="255">
                    <jr:detailCell style="table 1_TD" height="44" rowSpan="1">
                        <staticText>
                            <reportElement x="0" y="0" width="255" height="44"/>
                            <box leftPadding="5"/>
                            <textElement verticalAlignment="Middle">
                                <font isStrikeThrough="false"/>
                            </textElement>
                            <text><![CDATA[Name]]></text>
                        </staticText>
                    </jr:detailCell>
                </jr:column>
                <jr:column width="275">
                    <jr:detailCell style="table 1_TD" height="44" rowSpan="1">
                        <textField isStretchWithOverflow="true">
                            <reportElement x="0" y="0" width="275" height="44"/>
                            <box leftPadding="5"/>
                            <textElement verticalAlignment="Middle"/>
                            <textFieldExpression><![CDATA[$P{Details}.get("Name")]]></textFieldExpression>
                        </textField>
                    </jr:detailCell>
                </jr:column>
            </jr:table>
        </componentElement>

我还尝试了数据集 Run as

           <datasetRun subDataset="Table Dataset 2">
                    <parametersMapExpression><![CDATA[$P{Details}.get( "Name" )]]></parametersMapExpression>
                </datasetRun>

    <datasetRun subDataset="Table Dataset 2">
                    <parametersMapExpression><![CDATA[$P{Details}]]></parametersMapExpression>
                </datasetRun>  

        <datasetRun subDataset="Table Dataset 2">
                    <parametersMapExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}]]></parametersMapExpression>
                </datasetRun>

但是我只有一行作为输出,如何将地图传递给表格,我犯了什么错误?请帮助我。谢谢..

4

0 回答 0