5

我正在尝试使用 Jasper/iReport 在我的主报告中填充相同的数据。我怎样才能让 Json 结转?

在编辑表数据源中,我尝试过:

((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE})

new ((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE})

$P{REPORT_DATA_SOURCE}

$P{REPORT_CONNECTION}

所有这些都编译,但没有一个实际生成表。有任何想法吗?JSON 没有像 cloneDataSource() 这样的方法,那么有什么替代方法?

我的最终目标很简单:传入 JSON 数据并使用它生成图表,然后让表格显示相同的信息。我已经为此工作了好几天,贾斯珀让我很难受。请帮忙!

4

3 回答 3

11

我在使用子报告时遇到了类似的问题。似乎 JSON 数据源被主报告使用,因此您需要调用subDataSource()以获取子报告的新数据源,也可能用于表格 - 虽然尚未测试...

数据源表达式:((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource()

于 2014-05-22T10:08:25.397 回答
4

如果有人正在使用 JasperReports 的新图书报告功能(版本 6+ 中可用)并且您想使用JsonDataSource,这是将 json 有效负载传递给子报告的方法:

<p:subreportPart xmlns:p="http://jasperreports.sourceforge.net/jasperreports/parts" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/parts http://jasperreports.sourceforge.net/xsd/parts.xsd">
  <subreportParameter name="REPORT_DATA_SOURCE">
    <subreportParameterExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource()]]></subreportParameterExpression>
  </subreportParameter>
  <subreportExpression><![CDATA["PROFILES_cover.jasper"]]></subreportExpression>
</p:subreportPart>

您还可以通过提供节点位置作为subDataSource(java.lang.String selectExpression)方法的参数来传递 json 有效负载的子集。例子:

.subDataSource("Northwind.Customers")

或者

.subDataSource("Northwind.Customers(Country == USA)")
于 2015-07-03T02:34:52.317 回答
0

只需在主报告中添加数据源表达式:

<subreport>
    <reportElement x="-6" y="0" width="570" height="59" uuid="ac54a12b-8022-49a1-bc90-90cff664e3a1" />
    <dataSourceExpression>
        <![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("footer")]]>
    </dataSourceExpression>
    <subreportExpression>
        <![CDATA["footer.jrxml"]]>
    </subreportExpression>
</subreport>

它为我工作。希望它会有所帮助。

于 2018-04-17T13:31:10.247 回答