2008-09-11 5 views
2

Wenn Sie in einigen Berichten eine Aggregatsteuerung verwenden, würden Sie lieber ein leeres Feld anstelle von 0 sehen. Es scheint keine Möglichkeit zu bestehen, dies automatisch zu tun. Hat jemand einen Weg dies zu tun? Beachten Sie, dass Sie den Wert "0" für das Feld beibehalten möchten, wenn Sie exportieren, aber beim Rendern in PDF oder HTML ein Leerzeichen anzeigen möchten.Anzeige von Leerzeichen anstelle von 0 oder 0.0 in einem BIRT-Bericht

Antwort

0

Nur ein FYI, nachdem ich damit eine Weile länger gearbeitet habe, habe ich festgestellt, dass es einfach ist, Sichtbarkeitsregeln zu verwenden. Der große Vorteil ist, dass Sie verschiedene Sichtbarkeit für verschiedene Ausgabeformate leicht konfigurieren können. Für PDF ist es am besten, Leerzeichen zu verwenden, aber für Excel möchten Sie vielleicht die 0-Werte.

+0

Ja: Ich habe meine Meinung geändert. –

5

Es gibt eine Reihe von Möglichkeiten, dies zu lösen. Die beiden primären bestehen darin, entweder Sichtbarkeitsregeln oder Hervorhebungen zu verwenden, um eine bedingte Formatierung zu erstellen. Die Sichtbarkeit ist besonders attraktiv, da es einfach ist, die Formatregeln nur auf bestimmte Ausgabetypen (z. B. HTML) anzuwenden.

Für diesen speziellen Fall gibt es zwei Probleme mit diesen Ansätzen. Zuerst möchte ich eine allgemeine Lösung, bei der ich die Textfarbe nicht angeben muss. Mit anderen Worten, wenn die Bedingung wahr ist (Wert 0), möchte ich, dass meine Textfarbe mit der Hintergrundfarbe übereinstimmt. Auf diese Weise funktioniert der Code immer noch, wenn jemand die backgroundColor für das Steuerelement ändert.

Das andere Problem ist, dass in diesem Fall bin dynamische Spaltenbindung verwenden, die Wert Lookup nicht unterstützt.

Die Lösung, die ich erstellte, war, eine JavaScript-Funktion namens hideMe hinzuzufügen, wie unten gezeigt.

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

Sobald diese Funktion dem Bericht hinzugefügt wurde (in meinem Fall eine Javascript-Datei enthalten) Ich nenne es einfach aus dem OnCreate Methode der Steuerung.

Dies kann auch mithilfe von Java Event Handlern erfolgen, aber diese Methode scheint einfacher zu sein.

Verwandte Themen