2012-04-25 43 views
2

我的报告有问题。我用文本和参数编写我的输出。当我把参数。结果将显示文本和参数。但问题是,当我没有键入参数时,结果仍显示输出的文本字段。我在用java做。我不知道有什么问题。如何在输出为空时隐藏文本字段?

这是我的代码:

(($P{daterangefrom} != null) && ($P{daterangeto}!=null)) ? 
" From (" + $P{daterangefrom} + " - " + $P{daterangeto} + ")" 
: null 

任何人都知道错了我的公式。

回答

4

您必须确保该参数的值不为空。例如,您可以在Guava库的帮助下进行检查。

样本:

<?xml version="1.0" encoding="UTF-8"?> 
<jasperReport ..> 
    <import value="com.google.common.base.*"/> 
    <parameter name="daterangefrom" class="java.lang.String"/> 
    <parameter name="daterangeto" class="java.lang.String"/> 

    <title> 
     <band height="79" splitType="Stretch"> 
      <textField isBlankWhenNull="true"> 
       <reportElement x="185" y="12" width="100" height="20" isRemoveLineWhenBlank="true"/> 
       <textElement/> 
       <textFieldExpression><![CDATA[(!Strings.isNullOrEmpty($P{daterangefrom}) && 
    !Strings.isNullOrEmpty($P{daterangeto})) ? 
" From (" + $P{daterangefrom} + " - " + $P{daterangeto} + ")" 
: null]]></textFieldExpression> 
      </textField> 
     </band> 
    </title> 
</jasperReport> 

不要忘了isRemoveLineWhenBlankisBlankWhenNull文本框的属性。

+0

非常感谢。你很有帮助。谢谢你的回答。:) – 2012-04-25 12:46:26

+0

@Amin欢迎:) – 2012-04-25 12:49:07

+0

我还有一个问题,我试着把输入日期和第一次输入参数时的日期。当我把数据放在两个参数上。这是数据显示的日期和日期。但问题是当我把两个参数的数据。数据也显示。当我只输入一个参数时如何给出错误信息。当两个参数匹配时数据只显示。 – 2012-05-02 08:44:09