猿问

如何在运行时显示/隐藏列?

我想根据特定条件在运行时显示/隐藏列。我正在使用“表达式时打印”在报表中有条件地显示/隐藏此列(及其标题)。当隐藏该列时,它本应占用的空间留为空白,这并不是特别吸引人。

我希望如果以更有效的方式使用多余的空间,则可能包括:

  • 报告的宽度减去隐藏列的宽度

  • 多余的空间分布在其余列之间

从理论上讲,我可以通过将列(和标题)的宽度设置为0来实现第一个目标,但是还可以指示该列应调整大小以适合其内容。但是JasperReports没有提供“调整宽度以适合内容”选项。

另一种可能性是使用Jasper API生成报告,而不是用XML定义报告模板。但这对于这样一个简单的要求似乎需要付出很多努力。


慕标5832272
浏览 311回答 3
3回答

慕森王

空白时删除行:如果看不见对象,则此选项将占用对象占据的垂直空间;元素可见性由“表达式时打印”属性中包含的表达式的值确定。可以将页面视为放置元素的网格,其中一行是元素所占据的空间。图4-17突出显示了元素A线;为了真正删除该行,共享该行一部分的所有元素必须为空(即,将不会打印它们)。

四季花海

如果只是一列,则可以将此列放在最右边,然后在表达式时使用print。这样,中间没有孔。我知道这是不理想的,因为我过去曾尝试做您当前要完成的事情,却找不到我所谓的好解决方案。第二个想法是在第一个报告的基础上创建第二个报告,但不包含该列,然后在调用报告时检查条件,以决定要调用哪个报告。再次不理想,但会起作用。我知道这并不是您要找的答案,但是其中一些建议可能对您有用。
随时随地看视频慕课网APP

相关分类

Java
我要回答