JasperReports: is it possible to use multiple data sources, or if not, to use collections in parameters?
It seems tha开发者_StackOverflow社区t the reporting idiom is that a report consist of a single list of items, with some additional data (parameters). Are there ways to include several unrelated lists in a report, or would this go against the idiom to such an extent that a different tool should rather be used to generate the output?
Suppose, for instance, you have a list of Persons that lives in a Building, with names, phone numbers and so on. This list would be the main datasource. Additionally, on the same report you want to show various other information about that Building, such as address, number of floors and so on. The number of items in this information might vary between Buildings, so that you cannot simply put it into static parameters, but would need a map or a list. This is of course a contrieved example, but should serve to illustrate the problem.
In short: can you use several unrelated lists in a report?
I think what you want is a Subreport within your report.
A Subreport can have a different datasource than the main report.
Here is a tutorial on how to create one.
Yes,
To execute multiple queries on single database connection see
Multiple queries in a single jasper document
To generate new JRDatasource for subreport or component using
subDataset
from aList<MyBean>
parameter or field the syntax is similar to:<parameter name="param1" class="java.util.List"/> <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{param1})]]></dataSourceExpression>
For example see How to design report with tabular format?
With xml and json datasource
subDataSource
can be usedjson: How to create multiple tables in jasper report using json as a datasource?
xml: Jasper list element inside table element with XML datasource
精彩评论