Pergunta

Ao usar um controle agregado em alguns relatórios, você prefere ver um campo em branco em vez de 0.Não parece haver uma maneira de fazer isso automaticamente.Alguém tem uma maneira de fazer isso.Observe que você deseja manter o valor '0' para o campo nos casos em que exporta, mas deseja mostrar um espaço em branco ao renderizar para PDF ou HTML.

Foi útil?

Solução 2

Apenas para sua informação, depois de trabalhar com isso por mais algum tempo, descobri que é mais fácil usar regras de visibilidade.A única grande vantagem é que você pode configurar facilmente diferentes visibilidades para diferentes formatos de saída.Portanto, para PDF pode ser melhor usar espaços em branco, mas para Excel você pode querer os valores 0.

Outras dicas

Existem várias maneiras de resolver isso.As duas principais são usar regras de visibilidade ou destaques para criar formatação condicional.A visibilidade é particularmente atraente, uma vez que é fácil aplicar as regras de formato apenas a determinados tipos de saída (por exemplo,HTML).

Para este caso específico, existem dois problemas com essas abordagens.Primeiro, quero soluções gerais onde não seja necessário especificar a cor do texto.Em outras palavras, quando a condição for verdadeira (valor 0), quero que a cor do meu texto corresponda à cor de fundo.Dessa forma, se alguém alterar o backgroundColor do controle, o código ainda funcionará.

A outra questão é que, neste caso, estou usando a ligação dinâmica de colunas que não oferece suporte à pesquisa de valor.

A solução que criei foi adicionar uma função JavaScript chamada hideMe conforme mostrado abaixo.

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

Depois que essa função for adicionada ao relatório (no meu caso, um arquivo javascript incluído), basta chamá-la do método OnCreate do controle.

hideText(this);

Isso também pode ser feito usando manipuladores de eventos Java, mas esse método parece ser mais fácil.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top