一部のレポートで集計コントロールを使用する場合、0 ではなく空白のフィールドを表示したい場合があります。これを自動的に行う方法はないようです。誰もがこれを行うことができる方法を持っていますか? エクスポートする場合はフィールドの「0」値を維持したいが、PDF または HTML にレンダリングする場合は空白を表示したいことに注意してください。
2 に答える
これを解決するにはいくつかの方法があります。主な 2 つは、可視性ルールまたはハイライトを使用して条件付き書式を作成することです。特定のタイプの出力 (HTML など) にのみフォーマット ルールを適用するのは簡単なので、可視性は特に魅力的です。
この特定のケースでは、これらのアプローチには 2 つの問題があります。まず、テキストの色を指定する必要がない一般的なソリューションが必要です。つまり、条件が true (値 0) の場合、テキストの色を背景色と一致させる必要があります。そのようにして、誰かがコントロールの backgroundColor を変更しても、コードは引き続き機能します。
もう 1 つの問題は、この場合、値のルックアップをサポートしない動的列バインディングを使用していることです。
私が作成した解決策は、以下に示すように、hideMe という JavaScript 関数を追加することでした。
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;
}
}
この関数がレポート (私の場合は含まれている JavaScript ファイル) に追加されたら、コントロールの OnCreate メソッドから呼び出すだけです。
hideText(this);
これは Java Event Handlers を使用して行うこともできますが、この方法の方が簡単なようです。
参考までに、これをしばらく使用した後、可視性ルールを使用する方が簡単であることがわかりました。大きな利点の 1 つは、さまざまな出力形式に対してさまざまな可視性を簡単に構成できることです。したがって、PDF の場合は空白を使用するのが最適ですが、Excel の場合は 0 の値が必要になる場合があります。