在Jasper Reports中,是否可以根据特定条件动态更改列的宽度或位置?
例如,我们有一个包含以下列的报告:
ID |名称|课程|状态|
现在,有一个选项可以让报告只显示一个人的ID,而不是ID和名称。如果我们将name列设为null,我们最终会在ID和Course列之间留下巨大的空白:
ID | _ __ _ _ |课程|状态
是否可以以编程方式重新定位剩余的列,以便它们全部移动到ID列的旁边?
答案 0 :(得分:2)
我们遇到了同样的问题,并没有找到解决方案,只是丑陋的解决方法。
当我们有两个选项时,我们开始使用两个设计的简单解决方案。
当更多选项到来时,无法维护。我们现在使用动态结构:
$P{field_name1} | $P{field_name2}
------
$F{value1} | $P{value2} ...
我们将字段名称作为参数传递,并使用动态数据源。如果存在,我们不会显示最后的空列。请注意,我们需要动态查询并在代码中填充数据源,因此这可能不是一个可行的解决方案。
您拥有的另一个选择是在代码中创建Jasper Design(在另一个场景中我们也这样做) - 我们加载一个jrxml模板,然后根据需要动态添加band和项目。
JasperDesign jasperDesign = JRXmlLoader.load(myJrxml);