更改Jasper Reports列的大小/位置

时间:2011-01-19 11:33:02

标签: java jasper-reports

在Jasper Reports中,是否可以根据特定条件动态更改列的宽度或位置?

例如,我们有一个包含以下列的报告:

  

ID |名称|课程|状态|

现在,有一个选项可以让报告只显示一个人的ID,而不是ID和名称。如果我们将name列设为null,我们最终会在ID和Course列之间留下巨大的空白:

  

ID | _ __ _ _ |课程|状态

是否可以以编程方式重新定位剩余的列,以便它们全部移动到ID列的旁边?

1 个答案:

答案 0 :(得分:2)

我们遇到了同样的问题,并没有找到解决方案,只是丑陋的解决方法。

当我们有两个选项时,我们开始使用两个设计的简单解决方案。

当更多选项到来时,无法维护。我们现在使用动态结构:

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

我们将字段名称作为参数传递,并使用动态数据源。如果存在,我们不会显示最后的空列。请注意,我们需要动态查询并在代码中填充数据源,因此这可能不是一个可行的解决方案。

您拥有的另一个选择是在代码中创建Jasper Design(在另一个场景中我们也这样做) - 我们加载一个jrxml模板,然后根据需要动态添加band和项目。

JasperDesign jasperDesign = JRXmlLoader.load(myJrxml);