Как добавить номер страницы в основной и вложенный отчеты - PullRequest
1 голос
/ 07 марта 2012

У меня есть требование, где мне нужно отображать номер текущей страницы и общее количество страниц в отчетах. У меня есть сводный отчет и 2 подотчета. Я не могу определить, как отобразить правильный номер страницы в главном и вложенных отчетах. Было бы здорово, если бы ты мог мне помочь. Спасибо

Ответы [ 3 ]

1 голос
/ 07 марта 2012

Откройте Ireport и перейдите в Window-> Palette, здесь вы можете увидеть номер страницы и общий элемент страницы в категории инструментов. Теперь просто перетащите в то место, где вы хотите напечатать номера страниц.

0 голосов
/ 23 июня 2019

Вы можете использовать переменную $ V {PAGE_NUMBER}, но в случае подотчета он предоставляет вам либо только текущий подотчет номер страницы, либо общий подотчет количество страниц.Проблема в том, что Jasper Reports не позволяет напрямую передавать номер текущей страницы из основного отчета в подотчет.

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

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

public class ExampleScriptlet extends JRDefaultScriptlet {
private Integer page_number;

public void afterPageInit() throws JRScriptletException {
    this.page_number = (Integer) this.variablesMap.get("PAGE_NUMBER").getValue();
}

public String getPageNum() throws JRScriptletException {
    return String.valueOf(page_number);
}

public ExampleScriptlet getScriptlet() throws JRScriptletException {
    return this;
}}

В отчете master поместите scriptletClass = "my.example.ExampleScriptlet" в тег jasperReport.

В разделе подчиненного отчета основного отчета передать экземпляр сценария в подчиненный отчет

<subreportParameter name="pg_num" ><subreportParameterExpression>
                $P{REPORT_SCRIPTLET}.getScriptlet()
            </subreportParameterExpression> </subreportParameter>

Объявить параметр скриптлета в подчиненном элементе .отчет

<parameter name="pg_num" class="my.example.ExampleScriptlet"/>

В подотчете получить номер страницы из скриптлета

 <textFieldExpression><![CDATA["($P{pg_num}.getPageNum())"]]></textFieldExpression>
0 голосов
/ 14 декабря 2016

Прежде всего вам необходимо добавить текстовое поле в нижний колонтитул страницы на главной странице рапорта, и выражение должно быть: $V{PAGE_NUMBER}+" /" Затем добавьте другое текстовое поле рядом с первым, и выражение должно быть: " " + $V{PAGE_NUMBER}Это будет выглядеть так: 1/2 Но важно то, что;

  1. установить время оценки первых текстовых полей: " now " из окна свойств.
  2. установить время оценки вторых текстовых полей: " report " из окна свойств.

Затем для правильного просмотра номеров этих страниц на страницах подотчета;Нажмите и выберите название основного отчета в верхней части окна «Инспектор отчетов» с левой стороны.Убедитесь, что вы отметили и выбрали эту опцию в окне свойств:

Сводка с верхним и нижним колонтитулами страницы

Это позволит вашему подотчету правильно отображать номера страниц.Убедитесь, что в вашем подотчете есть сводная полоса для получения результатов.

Нет необходимости передавать параметры в подотчет или нет необходимости добавлять эти текстовые поля на страницы подотчета для отображения номеров страниц.

Подотчеты будут автоматически распознавать номера страниц.

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