2008-09-11 59 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事件處理程序完成,但此方法似乎更容易。