2010-05-12 82 views
7

Me gustaría tener un par de TextFields en función de un valor. Y el valor "y" debe ajustarse dependiendo del espacio vacío.¿Cómo puedo usar un TextField condicional en JasperReports?

Cuando el valor es "0" Me gustaría ocultar el TextField.

I.e. Me gustaría ocultar la staticText y la textField si el parámetro red es igual a "0" y tienen los valores de color azul se movieron hacia arriba, en la jrxml-código de abajo:

<staticText> 
    <reportElement x="100" y="30" width="100" height="30"/> 
    <text><![CDATA[Red items:]]></text> 
    </staticText> 
    <textField> 
    <reportElement x="200" y="30" width="40" height="30"/> 
    <textFieldExpression> 
     <![CDATA[$P{red}]]> 
    </textFieldExpression> 
    </textField> 

    <staticText> 
    <reportElement x="100" y="60" width="100" height="30"/> 
    <text><![CDATA[Blue items:]]></text> 
    </staticText> 
    <textField> 
    <reportElement x="200" y="60" width="40" height="30"/> 
    <textFieldExpression> 
     <![CDATA[$P{blue}]]> 
    </textFieldExpression> 
    </textField> 

Ejemplo de salida:

//if blue = 3 and red = 2 if blue = 3 and red = 0 if blue = 0 and red = 2 
    Red items: 2    Blue items: 3    Red items: 2 
    Blue items: 3  

Estos TextFields se colocarán al final de mi informe. ¿Cómo puedo hacer esto?

Respuesta

11
<reportElement ...> 
    <printWhenExpression><![CDATA[$P{red} == 0]]></printWhenExpression> 
</reportElement> 

Puede usar iReport para modificar esto con una interfaz de usuario agradable.

+1

No funciona para mí, me sale este error: ')' espera valor = (java.lang.Boolean) ($ {roja == 0}); // $ JR_EXPR_ID = 12 $ – Jonas

+0

He extendido mi pregunta ahora. No sé si esto es posible en JasperReports. – Jonas

+0

bueno, simplemente agrega '' a otros campos también, con la condición apropiada – Bozho

1

De esta manera, no, no estoy seguro de que sea posible.

Existe una opción llamada Remove Link When Blank, pero solo funciona si desea eliminar toda la línea. Aquí quiere eliminar una línea en una columna específica.

En este caso, recomendaría usar la función crosstab o CrossTables.

dar al grupo de la columna de valor de X. (suponiendo X es el número de columna) Y dar al grupo de filas el valor del campo de color, desde aquí se puede cambiar la etiqueta de forma dinámica, algo como esto:

$F{color}==null?"": ($F{color}.equals("RED")?"Red Items":"Blue Items") 
0

puede utilizar como esto

Declare RED as [class="java.lang.Number"] 

durante la impresión

$P{red}.intValue() == 0 ? null : $P{red}.intValue() 

y permitir en blanco cuando la opción nula del campo utilizando

textField isBlankWhenNull="true">    
<reportElement x="100" y="30" width="100" height="30" isRemoveLineWhenBlank="true"/> 
Cuestiones relacionadas