【问题标题】:How to pass parameter to the table component?如何将参数传递给表格组件?
【发布时间】:2018-07-05 01:56:53
【问题描述】:

我正在使用 Jaspersoft Studio 创建报告,但发现将参数传递到表时出现问题。

报告布局和结果

正如您在这些图片中看到的,当我尝试使用参数设置表头时,我得到null

为了获取值,我在报表参数列表和表数据集参数列表中创建了相同的参数名称。显然,它根本不起作用。

我尝试按照以下说明进行操作:jaspersoft-passing-parameter-to-tables

但我的数据源来自 net.sf.jasperreports.engine.data.JRBeanCollectionDataSource 参数,我找不到成功完成教程的方法。

相关代码:

<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="subreport" pageWidth="555" pageHeight="802" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="19165c65-293a-42f1-9c92-0f4ceacaaa39">
  .....
  <subDataset name="ATableDataset" uuid="f7f9da25-c513-46bb-92c2-5a97ee76eb5e">
    <parameter name="tableHeadA" class="java.lang.String"/>
    <parameter name="column1AHead" class="java.lang.String"/>
    <parameter name="column2AHead" class="java.lang.String"/>
    <parameter name="column3AHead" class="java.lang.String"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <field name="column1A" class="java.lang.String"/>
    <field name="column2A" class="java.lang.String"/>
    <field name="column3A" class="java.lang.String"/>
  </subDataset>
   .....
  <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="ATableDataset" uuid="8ac10f33-c9e3-4678-8280-2830a76f72c6">
    <dataSourceExpression><![CDATA[$P{AtableDatasource}]]></dataSourceExpression>
   </datasetRun>
    ....
</jr:table>
......
</jasperReport>

完整代码见gitHub,sample\src\main\resources\subreport.jrxml

【问题讨论】:

    标签: jasper-reports


    【解决方案1】:

    要将参数传递给表格组件,您需要:

    1.用所需的类定义数据源中的参数

    例子

    <subDataset name="TableDataset" uuid="da383fc2-e830-42d2-a822-6a65972efe4c">
        <parameter name="myParameter" class="java.lang.String"/>
         .......
    </subDataset>
    

    2。使用datasetParameter 标记传递报告参数、变量或字段

    例子

    <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="TableDataset" uuid="5c37a139-a9dc-4f1b-b231-5dd82794ae4f">
           <datasetParameter name="myParameter">
                 <datasetParameterExpression><![CDATA[$P{reportParameter}]]></datasetParameterExpression>
           </datasetParameter>
            <dataSourceExpression><![CDATA[....]]></dataSourceExpression>
       </datasetRun>
        ......
    </jr:table>
    

    在您的代码中,我找到了 1,但没有找到 2。

    【讨论】:

    • 第 3 步:要在表格行中使用“myParameter”,您可以执行类似 的操作
    猜你喜欢
    • 2021-04-03
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    • 2016-08-19
    • 2021-01-18
    • 1970-01-01
    • 2013-09-07
    相关资源
    最近更新 更多