3

我有空文本字段(它包含字符串或 bigdecimal 值)放在为我的报告拉出的单行上,显示一个空行。

为了删除具有空行的空白行,我使用了该行isRemoveLineWhenBlank中报告元素的属性。但这不起作用。

有人可以帮我吗?

折断: 在此处输入图像描述

输出快照: 在此处输入图像描述

jrxml:

<?xml version="1.0" encoding="UTF-8"  ?>
<!-- Created with iReport - A designer for JasperReports -->
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport
         name="WEB_PREVIEW"
         columnCount="1"
         printOrder="Horizontal"
         orientation="Portrait"
         pageWidth="595"
         pageHeight="900"
         columnWidth="535"
         columnSpacing="0"
         leftMargin="30"
         rightMargin="30"
         topMargin="20"
         bottomMargin="20"
         whenNoDataType="NoPages"
         isTitleNewPage="false"
         isSummaryNewPage="false">
    <property name="ireport.scriptlethandling" value="0" />
    <property name="ireport.encoding" value="UTF-8" />
    <import value="java.util.*" />
    <import value="net.sf.jasperreports.engine.*" />
    <import value="net.sf.jasperreports.engine.data.*" />

    <parameter name="GROSS_RENTAL_INCOME_SQPA_LABEL" isForPrompting="false" class="java.lang.String"/>
    <parameter name="GROSS_RENTAL_INCOME_SQPA" isForPrompting="false" class="java.math.BigDecimal"/>
    <defaultValueExpression ><![CDATA["C:\\Development_New\\Cyprus\\Cyprus\\WebRoot\\report\\"]]></defaultValueExpression>
    </parameter>
    <background>
            <band height="0"  isSplitAllowed="true" >
            </band>
        </background>
        <title>
            <band height="0"  isSplitAllowed="true" >
            </band>
        </title>
        <pageHeader>
            <band height="32"  isSplitAllowed="true" >
                <textField isStretchWithOverflow="true" isBlankWhenNull="true" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                    <reportElement
                        x="367"
                        y="105"
                        width="96"
                        height="12"
                        key="textField"
                        positionType="Float"
                        isRemoveLineWhenBlank="true">
                            <printWhenExpression><![CDATA[new Boolean($P{GROSS_RENTAL_INCOME_SQPA}!=null)]]></printWhenExpression>
                        </reportElement>
                    <box></box>
                    <textElement>
                        <font pdfFontName="Helvetica-Bold" size="8" isBold="true"/>
                    </textElement>
                <textFieldExpression   class="java.lang.String"><![CDATA[$P{GROSS_RENTAL_INCOME_SQPA_LABEL}]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="true" pattern="###,##0.00" isBlankWhenNull="true" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
                    <reportElement
                        x="472"
                        y="105"
                        width="48"
                        height="12"
                        key="textField"
                        positionType="Float"
                        isRemoveLineWhenBlank="true">
                            <printWhenExpression><![CDATA[new Boolean($P{GROSS_RENTAL_INCOME_SQPA}!=null)]]></printWhenExpression>
                        </reportElement>
                    <box></box>
                    <textElement>
                        <font size="8"/>
                    </textElement>
                <textFieldExpression   class="java.math.BigDecimal"><![CDATA[$P{GROSS_RENTAL_INCOME_SQPA}]]></textFieldExpression>
                </textField>
                </band>
        </detail>
        <columnFooter>
            <band height="0"  isSplitAllowed="true" >
            </band>
        </columnFooter>
        <pageFooter>
            <band height="0"  isSplitAllowed="true" >
            </band>
        </pageFooter>
        <summary>
            <band height="0"  isSplitAllowed="true" >
            </band>
        </summary>
</jasperReport>
4

2 回答 2

1

您可以播放下面的示例以获得您想要的结果。

它演示了如何在框架元素的帮助下隐藏带有两个textField元素(两列)的行(当然与问题中所说的使用isRemoveLineWhenBlank属性配合使用)。

jrxml文件代码:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport ... pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" 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="139" splitType="Stretch">
            <line>
                <reportElement x="10" y="61" width="520" height="1"/>
            </line>
            <line>
                <reportElement x="10" y="127" width="520" height="1"/>
            </line>
            <textField isBlankWhenNull="true">
                <reportElement x="10" y="85" width="52" height="20" isRemoveLineWhenBlank="true"/>
                <box leftPadding="10">
                    <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="65" width="52" height="20" isRemoveLineWhenBlank="true"/>
                <box leftPadding="10">
                    <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="62" y="65" width="52" height="20" isRemoveLineWhenBlank="true"/>
                <box leftPadding="10">
                    <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="62" y="85" width="52" height="20" isRemoveLineWhenBlank="true"/>
                <box leftPadding="10">
                    <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>
                <reportElement x="331" y="65" width="52" height="54"/>
                <textField isBlankWhenNull="true">
                    <reportElement x="0" y="20" width="52" height="20" isRemoveLineWhenBlank="true"/>
                    <box leftPadding="10">
                        <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="0" y="0" width="52" height="20" isRemoveLineWhenBlank="true"/>
                    <box leftPadding="10">
                        <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="383" y="65" width="52" height="54"/>
                <textField isBlankWhenNull="true">
                    <reportElement x="0" y="0" width="52" height="20" isRemoveLineWhenBlank="true"/>
                    <box leftPadding="10">
                        <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="0" y="20" width="52" height="20" isRemoveLineWhenBlank="true"/>
                    <box leftPadding="10">
                        <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>
            <textField isStretchWithOverflow="true">
                <reportElement x="16" y="0" width="115" height="51"/>
                <box topPadding="10" leftPadding="10" bottomPadding="10" rightPadding="10"/>
                <textElement>
                    <font isBold="true" isItalic="true"/>
                </textElement>
                <textFieldExpression><![CDATA["P1: " + $P{par1} + "\nP2: " +  $P{par2} + "\nP3: " +  $P{par3} + "\nP4: " +  $P{par4}]]></textFieldExpression>
            </textField>
        </band>
    </title>
</jasperReport>

iReport中的报表设计: iReport 中的设计

隐藏整行的结果: P1=空,P2=空,P3=3,P4=4

隐藏第一列第一行中唯一一个字段的结果: P1=空,P2=2,P3=3,P4=4

于 2012-04-13T08:01:08.617 回答
0

解决方案不是框架。

将 printWhenExpression 添加到文本字段:

<printWhenExpression><![CDATA[$P{par1}!=null]]></printWhenExpression></reportElement>

样本:

<textField isBlankWhenNull="true">
<reportElement x="719" y="0" width="52" height="11">
    <printWhenExpression><![CDATA[$P{par1}!=null]]></printWhenExpression>
</reportElement>
<box>
    <topPen lineWidth="1.0"/>
    <leftPen lineWidth="1.0"/>
    <bottomPen lineWidth="1.0"/>
    <rightPen lineWidth="1.0"/>
</box>
<textElement />
<textFieldExpression><![CDATA[$P{par1}]]></textFieldExpression>

于 2012-04-17T19:24:11.613 回答