【问题标题】:Detail textField overlapping详细文本字段重叠
【发布时间】:2013-12-05 01:06:29
【问题描述】:

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

这是目前的结果图片。

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

生成的报告如下所示:

如果与 CONCEPTO 文本字段的换行线重叠,您可以看到 Observations 文本字段。

更新在遵循Alex K 的提示后,我收到了这个输出......

这里是详细波段的代码:

<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>

【问题讨论】:

    标签: jasper-reports


    【解决方案1】:

    对于具有长文本(在您的情况下包含 $F{c03} 字段)的 textField,您应该将 isStretchWithOverflow 属性设置为 true,并且此属性适用于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中的报表设计:

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

    【讨论】:

    • 我应该在第二行设置 isStretchWithOverflow=false 和 stretchType="no strech" 吗? $F{c08}?
    • @chiperortiz 您应该将 stretchType 设置为 No stretch for textField for $F{c08} field
    猜你喜欢
    • 2012-11-20
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-02
    相关资源
    最近更新 更多