细节textField重叠

时间:2013-12-03 17:12:08

标签: jasper-reports

我有一个用 iReport 开发的小细节 JasperReports 的报告。我有经典的 Header 乐队和一行的值,但下面我需要放另一个textField,实际上很长达500个字符,即 Observations 。在 Detail 行中,一个字段最多可包含100个字符(即 CONCEPT ),这可能会导致textField垂直拉伸,这样可以正常工作。当 Concept textField垂直增长时出现问题 Observations 位于 Detail 行下方,保持在相同位置导致重叠彼此......

以下是迄今为止的一些结果图片。

我的报告有以下设计(在 iReport 中查看):

enter image description here

生成的报告如下所示:

enter image description here

正如您可以看到 Observations textField,如果重叠 CONCEPTO textField的换行符。

UPDATE 在按照Alex K的提示后,我正在接收此输出....

enter image description here

以下是 Detail 频段的代码:

<detail>
<band height="36" splitType="Stretch">
    <textField pattern="" isBlankWhenNull="true">
       <reportElement x="349" y="0" width="61" height="19"/>
    <textElement textAlignment="Center"/>
    <textFieldExpression class="java.lang.String"><![CDATA[$F{c04}+"€"]]></textFieldExpression>
        </textField>
    <textField pattern="" isBlankWhenNull="true">
        <reportElement x="410" y="0" width="53" height="19"/>
        <textElement textAlignment="Center"/>
        <textFieldExpression class="java.lang.String"><![CDATA[$F{c05}+"€"]]></textFieldExpression>
        </textField>
    <textField isBlankWhenNull="true">
        <reportElement x="240" y="-1" width="57" height="20"/>
        <textElement textAlignment="Right"/>
        <textFieldExpression class="java.lang.String"><![CDATA[$F{c06}]]></textFieldExpression>
        </textField>
    <textField isStretchWithOverflow="true" isBlankWhenNull="true">
        <reportElement x="68" y="0" width="172" height="19"/>
        <textElement/>
        <textFieldExpression class="java.lang.String"><![CDATA[$F{c03}]]></textFieldExpression>
        </textField>
        <textField pattern="" isBlankWhenNull="true">
            <reportElement x="297" y="0" width="51" height="19"/>
            <textElement textAlignment="Center"/>
            <textFieldExpression class="java.lang.String"><![CDATA[$F{c02}]]></textFieldExpression>
        </textField>
        <textField isBlankWhenNull="true">
            <reportElement isPrintRepeatedValues="false" x="0" y="0" width="67" height="19"/>
            <textElement/>
            <textFieldExpression class="java.lang.String"><![CDATA[$F{c07}]]></textFieldExpression>
        </textField>
        <textField pattern="" isBlankWhenNull="true">
            <reportElement positionType="Float" x="1" y="18" width="554" height="18"/>
            <textElement textAlignment="Left"/>
            <textFieldExpression class="java.lang.String"><![CDATA[$F{c08}]]></textFieldExpression>
        </textField>
    </band>
</detail>

1 个答案:

答案 0 :(得分:1)

您应该将 isStretchWithOverflow 属性设置为 textField true ,并带有长文本(在您的案例中包含$F{c03}字段)第二行中 textField 的属性(样本中包含$F{c08}字段):

  • positionType ,带有 Float 值;
  • stretchType 无拉伸值;
  • isStretchWithOverflow ,带有 true 值,用于支持长文本。

样本

jrxml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="overlapping_test" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
    <queryString>
        <![CDATA[]]>
    </queryString>
    <field name="c07" class="java.lang.String"/>
    <field name="c03" class="java.lang.String"/>
    <field name="c02" class="java.lang.String"/>
    <field name="c04" class="java.lang.String"/>
    <field name="c05" class="java.lang.String"/>
    <field name="c08" class="java.lang.String"/>
    <columnHeader>
        <band height="20" splitType="Stretch">
            <staticText>
                <reportElement x="0" y="0" width="92" height="20"/>
                <textElement/>
                <text><![CDATA[Code]]></text>
            </staticText>
            <staticText>
                <reportElement x="92" y="0" width="92" height="20"/>
                <textElement/>
                <text><![CDATA[Concept]]></text>
            </staticText>
            <staticText>
                <reportElement x="184" y="0" width="92" height="20"/>
                <textElement/>
                <text><![CDATA[Candidate]]></text>
            </staticText>
            <staticText>
                <reportElement x="276" y="0" width="92" height="20"/>
                <textElement/>
                <text><![CDATA[Price]]></text>
            </staticText>
            <staticText>
                <reportElement x="368" y="0" width="92" height="20"/>
                <textElement/>
                <text><![CDATA[Amount]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="40" splitType="Stretch">
            <textField>
                <reportElement x="0" y="0" width="92" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{c07}]]></textFieldExpression>
            </textField>
            <textField isStretchWithOverflow="true">
                <reportElement x="92" y="0" width="92" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{c03}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="184" y="0" width="92" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{c02}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="276" y="0" width="92" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{c04}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="368" y="0" width="92" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{c05}]]></textFieldExpression>
            </textField>
            <textField isStretchWithOverflow="true">
                <reportElement positionType="Float" x="0" y="20" width="460" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{c08}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

iReport 中的报告设计:

enter image description here

结果(通过 iReport 中的预览):

enter image description here