关于Eclipse:在BIRT报告中显示空白,而不是0或0.0

关于Eclipse:在BIRT报告中显示空白,而不是0或0.0

Display blanks instead of 0 or 0.0 in a BIRT report

在某些报表中使用聚合控件时,您希望看到一个空白字段而不是0。似乎没有一种自动执行此操作的方法。有谁有办法做到这一点。请注意,在导出的情况下,您希望字段的值保持为'0',但是在呈现为PDF或HTML时希望显示为空白。


有多种方法可以解决此问题。两个主要方法是使用可见性规则或突出显示来创建条件格式。可见性特别吸引人,因为仅将格式规则应用于特定类型的输出(例如HTML)很容易。

对于这种特殊情况,这些方法存在两个问题。首先,我需要一个通用的解决方案,无需指定文本颜色。换句话说,当条件为true(值为0)时,我希望文本颜色与背景颜色匹配。这样,如果有人更改了控件的backgroundColor,则代码仍然有效。

另一个问题是在这种情况下,我正在使用不支持值查找的动态列绑定。

我创建的解决方案是添加一个名为hideMe的JavaScript函数,如下所示。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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方法中调用它即可。

1
hideText(this);

这也可以使用Java事件处理程序来完成,但是此方法似乎更容易。


仅供参考,在使用了一段时间之后,我发现使用"可见性"规则更加容易。一大优势是,您可以轻松地为不同的输出格式配置不同的可见性。因此,对于PDF,最好使用空白,但是对于Excel,您可能需要0值。


推荐阅读