2011-01-19 126 views
3

在Jasper Reports中,是否可以根據特定條件動態更改列的寬度或位置?更改Jasper Reports列的大小/位置

例如,我們有一個包含以下列的報告:

ID |名稱|課程|狀態|

現在,有一個選項允許報告只顯示一個人的ID,而不是ID和名稱。如果我們將名稱列爲空,我們最終會在ID和課程列之間出現巨大的空白間隔:

ID | _ __ _ _ |課程|狀態

是否有可能以編程方式重新定位其餘列,以便它們都移動到ID列旁邊?

+0

你如何將設計傳遞給碧玉?根據選擇的選項是否可以有兩種設計? – Guillaume 2011-01-19 19:08:46

回答

2

我們有同樣的問題,並沒有找到一個解決方案,只是醜陋的解決方法。

我們開始有兩種設計,當我們有兩個選擇的一個簡單的解決方案。

當更多的選擇來了,這成了不可能維持。我們現在使用動態結構:

$P{field_name1} | $P{field_name2} 
------ 
$F{value1} | $P{value2} ... 

我們傳遞字段名稱作爲參數,並使用動態數據源。如果存在,我們不顯示最後的空列。請注意,我們需要動態查詢並在代碼中填充數據源,因此這可能不是一個可行的解決方案。

你有另一種選擇是,你在代碼中創建的碧玉設計(我們也做到這一點,在另一種情況下) - 我們加載一個JRXML模板,然後根據需要動態地添加帶和物品。

JasperDesign jasperDesign = JRXmlLoader.load(myJrxml);