Domanda

Quando utilizzi un controllo aggregato in alcuni report, preferiresti vedere un campo vuoto anziché 0.Non sembra esserci un modo per farlo automaticamente.Qualcuno ha un modo per farlo.Tieni presente che vuoi mantenere il valore '0' per il campo nei casi in cui esporti, ma vuoi mostrare uno spazio vuoto durante il rendering in PDF o HTML.

È stato utile?

Soluzione 2

Solo per tua informazione, dopo aver lavorato con questo per un po' più a lungo, ho scoperto che è semplicemente più semplice usare le regole di visibilità.L'unico grande vantaggio è che puoi configurare facilmente visibilità diversa per diversi formati di output.Quindi per PDF potrebbe essere meglio usare spazi vuoti, ma per Excel potresti volere i valori 0.

Altri suggerimenti

Esistono diversi modi per risolvere questo problema.I due principali sono utilizzare le regole di visibilità o le evidenziazioni per creare la formattazione condizionale.La visibilità è particolarmente interessante poiché è facile applicare le regole del formato solo a particolari tipi di output (ad es.HTML).

Per questo caso particolare, ci sono due problemi con questi approcci.Innanzitutto, voglio soluzioni generali in cui non devo specificare il colore del testo.In altre parole, quando la condizione è vera (valore 0), voglio che il colore del testo corrisponda al colore dello sfondo.In questo modo se qualcuno cambia backgroundColor per il controllo, il codice funziona comunque.

L'altro problema è che in questo caso sto utilizzando l'associazione dinamica delle colonne che non supporta la ricerca dei valori.

La soluzione che ho creato è stata quella di aggiungere una funzione JavaScript chiamata hideMe come mostrato di seguito.

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 volta aggiunta questa funzione al report (nel mio caso un file javascript incluso) la chiamo semplicemente dal metodo OnCreate del controllo.

hideText(this);

Questo può essere fatto anche utilizzando i gestori eventi Java, ma questo metodo sembra essere più semplice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top