2016-10-22 20 views
0

Возможно ли реализовать что-то вроде rowSpan с текстовыми файлами jasperrepors?Как растянуть jasperreports subreport, чтобы соответствовать высоте родителя

У меня есть два отчета: основной и подчиненный.

В основной группе подробно у меня есть текстовое поле и подотчет:

<band height="15" splitType="Stretch"> 
<property name="com.jaspersoft.studio.unit.height" value="pixel"/> 
<textField isStretchWithOverflow="true" isBlankWhenNull="true"> 
    <reportElement style="cell" stretchType="RelativeToBandHeight" 
        x="20" y="0" width="200" height="15" 
        isPrintWhenDetailOverflows="true"/> 
    <textElement textAlignment="Center" verticalAlignment="Middle"> 
     <font fontName="DejaVu Sans" size="7" isBold="true"/> 
     <paragraph leftIndent="1" rightIndent="1" spacingBefore="1" 
        spacingAfter="1"/> 
    </textElement> 
    <textFieldExpression><![CDATA[$F{org_name}]]></textFieldExpression> 
</textField> 
<subreport> 
    <reportElement stretchType="RelativeToTallestObject" x="220" y="0" 
        width="582" height="15" isPrintWhenDetailOverflows="true"> 
     <property name="com.jaspersoft.studio.unit.width" value="pixel"/> 
    </reportElement> 
    <subreportParameter name="SUBREPORT_DIR"> 
     <subreportParameterExpression> 
      <![CDATA[$P{SUBREPORT_DIR}]]> 
     </subreportParameterExpression> 
    </subreportParameter> 
    <dataSourceExpression><![CDATA[$F{EDU_LEVEL_DATASOURCE}]]></dataSourceExpression> 
    <subreportExpression> 
     <![CDATA[$P{SUBREPORT_DIR} 
       + "/reports/scholarship_fund_analysis/sub_education_level.jasper"]]> 
    </subreportExpression> 
</subreport> 

И есть один TextField подробно группы SubReport в.

Цель состоит в реализации чего-то типа rowSpan для текстового поля org_name в основном отчете. Он отлично работает, когда в субрепорте много контента.

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

отчет Результат выглядит следующим образом:

textfield and subreport

+1

Возможный дубликат [Jasper report split type] (http://stackoverflow.com/questions/39725089/jasper-report-split-type) & [Как увеличить текстовую высоту текста подкаталога как высоту текстового поля основного отчета?] (http://stackoverflow.com/q/38767084/876298) –

ответ

0

Идея: параметр пропуск, содержащий текст первого столбца из доклада SubReport. В подзаголовке отобразите этот параметр в фоновой полосе с цветом шрифта #FFFFFF (белый).

Как сделать это

Моя структура отчета: how it looks before

Первый столбец в основном докладе ($ F {daysLabel}). Второй и третий столбцы в подзаголовке.

Создать параметр в главном отчете (выберите подотчет, 1, а затем Изменить параметры, 2, как показано на рисунке ниже)

how enter a parameter

(у меня меньше, чем 10 очков репутации, я не могу ставить больше изображений, поэтому больше нет изображений.)

В открывшемся окне вы вводите имя параметра (допустим, toto), и под выражением вы вводите переменную, содержащую значение вашего столбца, в моем случае $ F {daysLab эль}.

В подотчете создается параметр с тем же именем, что и тот, который вы только что создали в основном докладе (Toto) и отображать его в фоне полосе. Установите условие переполнения растяжения равным true. В моем случае это нормально, так как ширина первого столбца идеально вписывается в мой subreport witdh. Возможно, в вашем случае вам может понадобиться «специальная настройка».

Установите цветной шрифт на белый, и вы увидите, что ваш субреестр растягивается так же, как и первый столбец вашего основного отчета. Что касается границ ваших клеток в подотчетом, установите bottomPen 0:

<topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> 
 
<leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> 
 
<bottomPen lineWidth="0" lineStyle="Solid" lineColor="#000000"/> 
 
<rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>

так, что только верхняя граница видна.

В главном отчете , объедините свой отчет с рамкой, имеющей все 4 границы.

Мой комментарий (если вы не возражаете): это неприятный способ, я думаю. В то же время я полагаю, что механизм яшмы проявляется из самого внутреннего подзаголовка до самого внешнего, т. Е. Основного отчета. Как только яшма выполняется с самым удаленным отчетом, она не повторно отображает внутренние отчеты, чтобы приспособиться к самому внешнему. Я пробовал со временем оценки, кроме Теперь и Авто, но текстовые поля больше не растягиваются. Я также пробовал разные типы растяжек в основном и суб-отчете без везения. Это единственное решение, которое я мог бы выяснить.

Я был бы очень рад, если у кого-то есть более чистое решение этой проблемы.