Question

Lorsque vous utilisez un contrôle agrégé dans certains rapports, vous préféreriez voir un champ vide au lieu de 0.Il ne semble pas y avoir de moyen de le faire automatiquement.Quelqu'un a-t-il un moyen de le faire?Notez que vous souhaitez conserver la valeur « 0 » pour le champ dans les cas où vous exportez, mais vous souhaitez afficher un espace vide lors du rendu au format PDF ou HTML.

Était-ce utile?

La solution 2

Juste pour information, après avoir travaillé avec cela pendant un certain temps, j'ai découvert qu'il est tout simplement plus facile d'utiliser les règles de visibilité.Le seul gros avantage est que vous pouvez facilement configurer différentes visibilités pour différents formats de sortie.Ainsi, pour le PDF, il est peut-être préférable d'utiliser des espaces, mais pour Excel, vous souhaiterez peut-être les valeurs 0.

Autres conseils

Il existe plusieurs façons de résoudre ce problème.Les deux principales consistent à utiliser soit des règles de visibilité, soit des surlignages pour créer une mise en forme conditionnelle.La visibilité est particulièrement intéressante puisqu'il est facile d'appliquer les règles de format uniquement à des types particuliers de sortie (par ex.HTML).

Dans ce cas particulier, ces approches posent deux problèmes.Tout d’abord, je veux des solutions générales dans lesquelles je n’ai pas besoin de spécifier la couleur du texte.En d’autres termes, lorsque la condition est vraie (valeur 0), je souhaite que la couleur de mon texte corresponde à la couleur d’arrière-plan.De cette façon, si quelqu'un modifie la backgroundColor du contrôle, le code fonctionne toujours.

L'autre problème est que dans ce cas, j'utilise la liaison de colonne dynamique qui ne prend pas en charge la recherche de valeur.

La solution que j'ai créée consistait à ajouter une fonction JavaScript appelée hideMe comme indiqué ci-dessous.

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

Une fois cette fonction ajoutée au rapport (dans mon cas un fichier javascript inclus) je viens de l'appeler depuis la méthode OnCreate du contrôle.

hideText(this);

Cela peut également être fait à l'aide des gestionnaires d'événements Java, mais cette méthode semble plus simple.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top