Вопрос по jasper-reports – Как убрать лишний пробел между текстовым полем в JasperReports?

5

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

Как убрать пространство?

Это мой код:

<code><textField isBlankWhenNull="true">
    <reportElement x="0" y="18" width="555" height="35" isRemoveLineWhenBlank="true"/>
    <textElement textAlignment="Center">
        <font size="12"/>
    </textElement>
    <textFieldExpression><![CDATA[$P{daterangefrom}  && $P{daterangeto}  ?  "From ( " + $P{daterangefrom} + " - " + $P{daterangeto} + ")"
: $P{weeks}  && $P{monthy} && $P{yrs} ? "For week " + $P{weeks} +" "+ $P{monthy} +" "+ $P{yrs}
: $P{monthy}  && $P{yrs} ? "For monthly " +$P{monthy} +" "+ $P{yrs}
: $P{quarter}  &&  $P{yrs}  ? "For Quarter " + $P{quarter} +" "+$P{yrs}
: $P{yrs}  ? "For " + $P{yrs}
: null]]>
    </textFieldExpression>
</textField>
</code>

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

enter image description here

Вы можете использовать одинtextField, Какое расположение полей вы используете (вертикально или горизонтально)? Alex K
Я использую вертикальный. вчера, я использую объединить все в одном текстовом поле, и я поставил двойную строку. когда одного из трех не покажут. это покажет 2 текстовых поля. но в текстовом поле есть место. Как убрать пространство, чтобы отчет мог отображать более структурированный? Amin SCO

Ваш Ответ

2   ответа
1

но если вы не предоставите более подробную информацию о своем отчете. Я не могу придумать несколько хороших предложений.

Но вот несколько советов могут помочь вам.

Use one TextField and one parameter.

Вместо того, чтобы составлять свой заголовок в jrxml с отдельнымTextFieldВы можете составить это вJava Сначала сохраните в качестве параметра. Таким образом, вы можете сделатьJava помочь вам со всей логикой о составлении строки.

Use one TextField and three parameters

Вы можете просто написать такие выражения вTextField

$P{FirstName} + " " + ${MiddleName} + " " + ${LastName}

так что вы можете предотвратить разрыв, вызванный пустымTextField, Или используйте сокращенное выражение условия, как это.

$P{FirstName} + (${MiddleName}.isEmpty() ? "" : " " + ${MiddleName}) + " " + ${LastName}
Можете ли вы обновить свой код в свой вопрос? комментарий не очень хорошее место для чтения кода. И пожалуйстаexplain your problemНапример, какой результат вы ожидаете получить, но как он выглядит сейчас.
Мы попробовали с этим примером, чтобы он работал нормально для меня. Как мы можем реализовать то же самое с & quot; полями & quot; вместо "Param"
я поставил свой код и я изменил отчет на javascript, это мои картинки,i.stack.imgur.com/guooK.jpg Amin SCO
15

textField элементы сisRemoveLineWhenBlank свойство установлено вtrue значение.

Пример (файл jrxml):

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport .. topMargin="0" bottomMargin="0">
    <parameter name="parameter1" class="java.lang.String">
        <defaultValueExpression><![CDATA[null]]></defaultValueExpression>
    </parameter>
    <parameter name="parameter2" class="java.lang.String">
        <defaultValueExpression><![CDATA[null]]></defaultValueExpression>
    </parameter>
    <parameter name="parameter3" class="java.lang.String">
        <defaultValueExpression><![CDATA[null]]></defaultValueExpression>
    </parameter>
    <title>
        <band height="102" splitType="Stretch">
            <textField isBlankWhenNull="true">
                <reportElement x="163" y="9" width="100" height="20" isRemoveLineWhenBlank="true"/>
                <box>
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement/>
                <textFieldExpression><![CDATA[$P{parameter1} == null ? null : "Parameter1: " + $P{parameter1}]]></textFieldExpression>
            </textField>
            <textField isBlankWhenNull="true">
                <reportElement x="163" y="29" width="100" height="20" isRemoveLineWhenBlank="true"/>
                <box>
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement/>
                <textFieldExpression><![CDATA[$P{parameter2} == null ? null : "Parameter2: " + $P{parameter2}]]></textFieldExpression>
            </textField>
            <textField isBlankWhenNull="true">
                <reportElement x="163" y="49" width="100" height="20" isRemoveLineWhenBlank="true"/>
                <box>
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement/>
                <textFieldExpression><![CDATA[$P{parameter3} == null ? null : "Parameter3: " + $P{parameter3}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement x="163" y="73" width="100" height="20"/>
                <box>
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement/>
                <text><![CDATA[Static text]]></text>
            </staticText>
            <line>
                <reportElement x="63" y="6" width="447" height="1"/>
            </line>
            <line>
                <reportElement x="73" y="96" width="447" height="1"/>
            </line>
        </band>
    </title>
</jasperReport>

Дизайн отчета вiReport: Report's design in iReport

Дляparameter1=null, parameter2=null, parameter1=value3 результат будет: The result in iReport (preview mode)

UPDATE

Для решения проблемы продвижения вверхtextField в случае, если элемент выше был скрыт, вы можете использоватьFrame контейнер. Вы должны добавить 2 кадра (один на столбец) и поставить 2textField элементы (2 ряда) в каждом кадре.

Пример (файл jrxml):

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport .. topMargin="0" bottomMargin="0">
    <parameter name="par1" class="java.lang.String">
        <defaultValueExpression><![CDATA[null]]></defaultValueExpression>
    </parameter>
    <parameter name="par2" class="java.lang.String">
        <defaultValueExpression><![CDATA[null]]></defaultValueExpression>
    </parameter>
    <parameter name="par3" class="java.lang.String">
        <defaultValueExpression><![CDATA[null]]></defaultValueExpression>
    </parameter>
    <parameter name="par4" class="java.lang.String">
        <defaultValueExpression><![CDATA[null]]></defaultValueExpression>
    </parameter>
    <title>
        <band height="80" splitType="Stretch">
            <line>
                <reportElement x="10" y="6" width="520" height="1"/>
            </line>
            <line>
                <reportElement x="10" y="72" width="520" height="1"/>
            </line>
            <frame>
                <reportElement x="329" y="10" width="172" height="59"/>
                <frame>
                    <reportElement x="13" y="3" width="60" height="54"/>
                    <textField isBlankWhenNull="true">
                        <reportElement x="1" y="20" width="52" height="20" isRemoveLineWhenBlank="true"/>
                        <box>
                            <topPen lineWidth="1.0"/>
                            <leftPen lineWidth="1.0"/>
                            <bottomPen lineWidth="1.0"/>
                            <rightPen lineWidth="1.0"/>
                        </box>
                        <textElement/>
                        <textFieldExpression><![CDATA[$P{par3} == null ? null : "P3: " + $P{par3}]]></textFieldExpression>
                    </textField>
                    <textField isBlankWhenNull="true">
                        <reportElement x="1" y="0" width="52" height="20" isRemoveLineWhenBlank="true"/>
                        <box>
                            <topPen lineWidth="1.0"/>
                            <leftPen lineWidth="1.0"/>
                            <bottomPen lineWidth="1.0"/>
                            <rightPen lineWidth="1.0"/>
                        </box>
                        <textElement/>
                        <textFieldExpression><![CDATA[$P{par1} == null ? null : "P1: " + $P{par1}]]></textFieldExpression>
                    </textField>
                </frame>
                <frame>
                    <reportElement x="73" y="3" width="70" height="54"/>
                    <textField isBlankWhenNull="true">
                        <reportElement x="1" y="0" width="52" height="20" isRemoveLineWhenBlank="true"/>
                        <box>
                            <topPen lineWidth="1.0"/>
                            <leftPen lineWidth="1.0"/>
                            <bottomPen lineWidth="1.0"/>
                            <rightPen lineWidth="1.0"/>
                        </box>
                        <textElement/>
                        <textFieldExpression><![CDATA[$P{par2} == null ? null : "P2: " + $P{par2}]]></textFieldExpression>
                    </textField>
                    <textField isBlankWhenNull="true">
                        <reportElement x="1" y="20" width="52" height="20" isRemoveLineWhenBlank="true"/>
                        <box>
                            <topPen lineWidth="1.0"/>
                            <leftPen lineWidth="1.0"/>
                            <bottomPen lineWidth="1.0"/>
                            <rightPen lineWidth="1.0"/>
                        </box>
                        <textElement/>
                        <textFieldExpression><![CDATA[$P{par4} == null ? null : "P4: " + $P{par4}]]></textFieldExpression>
                    </textField>
                </frame>
            </frame>
            <textField isBlankWhenNull="true">
                <reportElement x="10" y="30" width="52" height="20" isRemoveLineWhenBlank="true"/>
                <box>
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement/>
                <textFieldExpression><![CDATA[$P{par3} == null ? null : "P3: " + $P{par3}]]></textFieldExpression>
            </textField>
            <textField isBlankWhenNull="true">
                <reportElement x="10" y="10" width="52" height="20" isRemoveLineWhenBlank="true"/>
                <box>
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement/>
                <textFieldExpression><![CDATA[$P{par1} == null ? null : "P1: " + $P{par1}]]></textFieldExpression>
            </textField>
            <textField isBlankWhenNull="true">
                <reportElement x="64" y="10" width="52" height="20" isRemoveLineWhenBlank="true"/>
                <box>
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement/>
                <textFieldExpression><![CDATA[$P{par2} == null ? null : "P2: " + $P{par2}]]></textFieldExpression>
            </textField>
            <textField isBlankWhenNull="true">
                <reportElement x="64" y="30" width="52" height="20" isRemoveLineWhenBlank="true"/>
                <box>
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement/>
                <textFieldExpression><![CDATA[$P{par4} == null ? null : "P4: " + $P{par4}]]></textFieldExpression>
            </textField>
        </band>
    </title>
</jasperReport>

Дизайн отчета вiReport: The design in iReport. Two cases

Дляpar1=null, par2=2, par3=3, par4=4 результат будет: The result in iReport preview. Two cases

Вы можете сравнить результаты - левая сторона делается без использованияframe и правая сторона сframe элементы.

Я извиняюсь за опоздание с ответом. Я показал правило на своих фотографиях. Это моя фотография. [2]:i.stack.imgur.com/PpOkq.jpg.Hope вы можете мне помочь. Amin SCO
@Amin Только что добавил скриншот дизайна отчета
@AlexK, поздравляю!
Спасибо @ Алекс k. но у меня есть еще один вопрос, как насчет того, чтобы поставить всего 4 TextField. я поместил 2 текстовое поле в строке 1 и 2 текстовое поле в строке 2. как удалить пробел, если удалить одно текстовое поле в строке 1 ?. Amin SCO
Например, у вас естьtxtFieldName1 а такжеtxtFieldValue1 в первом ряду иtxtFieldName2 а такжеtxtFieldValue2 во втором ряду (строке). Если выражениеtxtFieldName1 элемент равен нулю, хотите ли вы скрыть оба элемента (txtFieldName1 а такжеtxtFieldValue1) и показать только один ряд (сtxtFieldName2 а такжеtxtFieldValue2 элементы) в этом случае или вы хотите показатьtxtFieldName2 а такжеtxtFieldValue1 в первом ряду и толькоtxtFieldValue2 во втором ряду? Можете ли вы объяснить мне правило?

Похожие вопросы