2013-02-18 15 views
5

Próbuję uzyskać tabelę do wypełnienia tymi samymi danymi w moim głównym raporcie za pomocą Jasper/iReport. Jak mogę zmusić Jsona do przeniesienia?Jasperreports - jak uzyskać JSON do wypełnienia podraportu

W Edycja źródła danych tabeli Próbowałem:

((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} 

Wszystko to skompilować, ale żadna z nich nie faktycznie generuje tabelę. Jakieś pomysły? Nie ma metody jak cloneDataSource() dla JSON, więc jaka jest alternatywa?

Mój ostateczny cel jest prosty: przekazać dane JSON i użyć go do wygenerowania wykresu, a następnie mieć tabelę wyświetlającą te same informacje. Od wielu dni pracuję nad tym, Jasper sprawia mi trudność. Proszę pomóż!

Odpowiedz

7

Miałem problemy z podobnym problemem podczas korzystania z raportów podrzędnych. Wydaje się, że źródło danych JSON zostanie zużyte przez główny raport, więc musisz wywołać subDataSource(), aby uzyskać nowe źródło danych dla raportów podrzędnych, a może również dla tabel - jeszcze tego nie przetestowałem ...

Źródło danych wyrażenie: ((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource()

+0

ah tak to był mój problem. jeszcze tego nie próbowałem, zrobię to teraz. –

+1

'' ma wszystko naprawione –

+0

to jest nie działa dla mnie. Wystąpił błąd net.sf.jasperreports.engine.data.JsonDataSourc e nie można rozwiązać lub nie jest typu – Yebach

1

Jeśli ktoś korzysta z funkcji JasperReports nowych raportów Book (dostępne w wersji 6+) i chcesz używać JsonDataSource, jest to sposób, aby zdać ładunek json do podraporty:

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

Można również przekazać podzbiór json ładunku danych, zapewniając n lokalizacja ode jako parametr metody subDataSource(java.lang.String selectExpression). Przykłady:

.subDataSource("Northwind.Customers") 

lub

.subDataSource("Northwind.Customers(Country == USA)") 
Powiązane problemy