Как избежать пропуска границы ячейки, когда запись разделена между 2 страницами? - PullRequest
4 голосов
/ 15 января 2012

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

Это результат:

enter image description here

Как переместить последнюю запись (№ 26) на следующую страницу или как показать строку?

Ответы [ 2 ]

6 голосов
/ 15 января 2012

Вы можете поместить элемент staticText без текста позади элемента textField.Вы должны установить stretchType свойство со значением RelativeToTallestObject и isPrintWhenDetailOverflows свойством с true значение.

Пример:

<detail>
    <band height="20" splitType="Stretch">
        <staticText>
            <reportElement stretchType="RelativeToTallestObject" x="0" y="0" width="100" height="20" isPrintWhenDetailOverflows="true"/>
            <box>
                <leftPen lineWidth="1.0"/>
                <bottomPen lineWidth="1.0"/>
                <rightPen lineWidth="1.0"/>
            </box>
            <textElement/>
            <text><![CDATA[]]></text>
        </staticText>
        <textField>
            <reportElement stretchType="RelativeToTallestObject" x="0" y="0" width="100" height="20"/>
            <box>
                <leftPen lineWidth="1.0"/>
                <bottomPen lineWidth="1.0"/>
                <rightPen lineWidth="1.0"/>
            </box>
            <textElement/>
            <textFieldExpression><![CDATA[$F{id}]]></textFieldExpression>
        </textField>

В результате вы получите вертикальную границу на второй странице.

The text from resulting PDF file with vertical border after using the staticText

Результат до добавления второго staticText был ( вертикальная граница на второй странице отсутствует ):

The text from resulting PDF file without vertical border before using the staticText

4 голосов
/ 23 октября 2012

Лучший способ - убедиться, что новые элементы в группе подробностей (или любой группе) будут созданы на следующей странице путем установки, но не в текстовом поле.Для полосы, в которой находится текстовое поле, вы можете установить для параметра Тип разделения значение Запретить.если вы установите его на полосе детализации и строка должна быть переполнена на следующую страницу, она переместит всю строку на следующую страницу.

...