JasperReports: Как динамически изменить выражение subreportExpression - PullRequest
0 голосов
/ 21 января 2011

То, что я пытаюсь сделать, на вид просто.

У меня есть основной отчет, включающий элемент подотчета. Подотчет заполняется из JRAbstractBeanDataSource, в котором содержится коллекция из 0-n подотчетов.

В основном отчете подотчет находится с:

<subreportExpression  class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + $F{subReportFileName}]]></subreportExpression>

Это отлично работает, SUBREPORT_DIR передается в качестве параметра источнику данных в коде.

Что мне нужно сделать, так это выбрать другое имя отчета, основанное на свойствах подотчета, например:

<subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "$F{subReportFileName}"]]></subreportExpression>

То есть, разрешите каждому элементу в коллекции данных подотчета в источнике данных указать, каким будет имя файла .jasper (то есть, разрешите ему выбирать, какой подотчет использовать).

Может быть, есть лучший способ обдумать / приблизиться к этому.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2012

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

0 голосов
/ 28 января 2011

Просто примечание - если вы хотите включить код в свой вопрос, используйте кнопку кода над окном композиции.Мы не можем видеть ваш пример.Если вы щелкнете на вопросительном знаке внутри маленького оранжевого квадрата в верхнем правом углу окна композиции, вы попадете в учебник по редактированию Markdown.

Мне немного неясно, чего вы пытаетесь достичь.Из коллекции я не уверен, хотите ли вы включить все подотчеты в свой отчет и вам нужен способ перебирать их имена в каталоге или если вы хотите, чтобы выбор подотчета был динамическим.Я не знаю, как включить в основной отчет более одного подотчета.Если вы хотите динамически выбирать имя отчета, почему бы просто не сделать имя вложенного отчета параметром, который передается в ваш отчет из вашего кода.Вы можете сделать свою логику, чтобы решить, какое имя отчета вы хотите, основываясь на любых критериях, которые вы выбираете.Если это не то, что вам нужно, возможно, вам поможет более подробная информация в вашем вопросе.

...