Есть ли способ заполнять подотчеты, как мы делаем с основными отчетами? (JasperReports) - PullRequest
0 голосов
/ 03 июля 2018

Есть ли способ заполнить подотчеты, как мы делаем с основными отчетами, а затем добавить их в основной отчет?

Что-то вроде:

fillReportxxx(subreport, subParams, subDataSource);
mainParams.put("subreport", subreport);
fillReportxxx(mainReport, mainParams, mainDataSource);

Все способы, которые я видел в Интернете, говорят о передаче всех источников данных и параметров из основного отчета в подотчеты. Но в моем случае было бы очень полезно сделать это таким образом.

Почему?

У меня есть мой основной компонент и мой компонент подчиненного отчета, готовый для использования в качестве источника данных, но у них есть некоторые общие имена полей, поэтому я предполагаю, что не могу передать их все в основной отчет без конфликта ( их много: имена и подотчеты). И я полагаю, что если я централизую весь ввод данных в свой основной отчет, мне придется создать единый класс бинов, верно? У меня есть несколько параметров name в конфликте (одно и то же имя в main и sub), но это незначительная проблема (это проблема?).

Я начинаю с JasperReports и обнаружил, что заполнение каждого отчета по отдельности было бы более интуитивным способом. Также в документе говорится:

Поскольку подотчеты сами являются обычными отчетами, они составляются и заполняются так же, другие отчеты. Это означает, что им также требуется источник данных, из которого можно получить данные. когда они заполнены. Они также могут полагаться на параметры для получения дополнительной информации для использования когда заполняется. Существует два способа предоставления значений параметров для подотчета. Вы можете предоставить карту, содержащую значения параметров, как при заполнении нормального отчета с данными, используя один из методов fillReportXXX (), предоставляемых Класс JasperFillManager (см. «Заполнение шаблонов отчетов» на стр. 19)

Небольшое исправление

Я видел некоторый код, в котором bean-компоненты подотчета передаются в качестве параметра, и он работает:

JRDataSource dataSourceSubReport = new JRBeanCollectionDataSource(listOfBeans);
parameters.put("SUBREPORT_DIR", subReport);
parameters.put("criteriosDS", dataSourceSubReport);

//and then fill the main normally
fillReportxxx(mainReport, parameters, mainDataSource);

Это исправило мою главную проблему с конфликтами источника данных, но я нахожу это, возможно, немного грязным. Я думаю, это должно быть чище.

Другой способ?

Может быть, я пропустил способ передачи различных компонентов и параметров из основного отчета в подотчет, содержащий имена и компоненты без конфликтов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...