2008-09-11 57 views
2

在某些报告中使用聚合控件时,您希望看到一个空白字段而不是0.看起来没有办法自动执行此操作。有没有人有办法做到这一点。请注意,您希望在导出时保留该字段的'0'值,但在渲染为PDF或HTML时要显示空白。在BIRT报告中显示空白而不是0或0.0

回答

0

只是一个参考,在使用了一段时间后,我发现使用可见性规则更简单。一大优势是您可以轻松地为不同的输出格式配置不同的可见性。所以对于PDF,最好使用空格,但对于Excel,您可能需要0值。

+0

是的:我改变了主意。 – 2010-09-14 16:12:20

5

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

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

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

我创建的解决方案是添加一个名为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事件处理程序完成,但此方法似乎更容易。