Pregunta

Cuando utilice un control agregado en algunos informes, preferirá ver un campo en blanco en lugar de 0.No parece haber una manera de hacer esto automáticamente.¿Alguien tiene una manera de hacer esto?Tenga en cuenta que desea mantener el valor '0' para el campo en los casos en que exporta, pero desea mostrar un espacio en blanco al renderizar a PDF o HTML.

¿Fue útil?

Solución 2

Solo para su información, después de trabajar con esto por un tiempo más, descubrí que es más fácil usar reglas de visibilidad.La gran ventaja es que puedes configurar fácilmente una visibilidad diferente para diferentes formatos de salida.Entonces, para PDF puede ser mejor usar espacios en blanco, pero para Excel es posible que desee los valores 0.

Otros consejos

Hay varias formas de solucionar esto.Los dos principales son utilizar reglas de visibilidad o resaltados para crear formato condicional.La visibilidad es particularmente atractiva ya que es fácil aplicar las reglas de formato sólo a tipos particulares de salida (p. ej.HTML).

Para este caso particular, hay dos problemas con estos enfoques.Primero, quiero soluciones generales en las que no tenga que especificar el color del texto.En otras palabras, cuando la condición es verdadera (valor 0), quiero que el color de mi texto coincida con el color de fondo.De esa manera, si alguien cambia el color de fondo del control, el código seguirá funcionando.

El otro problema es que en este caso estoy usando un enlace de columna dinámico que no admite la búsqueda de valores.

La solución que creé fue agregar una función de JavaScript llamada hideMe como se muestra a continuación.

function hideText (dataControl){
    if (dataControl.getValue() == 0) {
        var color = dataControl.getStyle().getBackgroundColor();
        var parentItem = dataControl.getParent();
        do {
            if (color == null && parentItem != null) {
                color = parentItem.getStyle().getBackgroundColor();
                parentItem = parentItem.getParent();
            } else {
                break;
            }

        } while (color == null);
        dataControl.getStyle().color = color;
    }
}

Una vez que esta función se ha agregado al informe (en mi caso, un archivo javascript incluido), simplemente la llamo desde el método OnCreate del control.

hideText(this);

Esto también se puede hacer utilizando controladores de eventos de Java, pero este método parece ser más sencillo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top