Jasper Report 报表实现动态隐藏/删除某个字段/行后不留空白

4 3月

需求

在用Jasper Studio画PDF报表的时候,我们发现有 print when blank 选项, 但是勾选后组建消失会留下一片空白,有时候我们想要的效果是隐藏,后面的组建直接顶上来,或者整个一行直接移除掉。这时候就要用到我们的Frame组建了。

理解Frame组建

Frame 组建其实就是新建了一个容器,然后再继续往这个容器里面放你要的组建。为什么要重新在外面包一层Frame呢?直接放组建在模板上不行吗?

这是因为,新的Frame里它会重新计算坐标,放在里面的组建的location, 也就是x轴,y轴等信息都是重新计算的,所以把想要移除和缩进的组建放在一起就能起到我们想要的效果。而且不会破坏外层主模板的排版格式。

详细步骤

利用Frame我们可以控制在同一排或者一列的组建隐藏缩进,如下图,我们可以做到的是:

  1. 隐藏A,B。让C出现在A的位置。
  2. 隐藏A。让C出现在A的位置,然后C,B在一排。
  3. 隐藏A。让B出现在A的位置,然后B,C在一列。

 

我们做不到的是:

  1. 隐藏B,让C出现在B的位置,然后A,C在一排。

需求1

现在我们来实现需求 1:

新建一个Frame套住A和B

然后设置好Frame的隐藏条件,一定要钩上remove line when blank

这样就搞定了,如果满足隐藏条件,A, B就会隐藏, C就会顶上来。

需求2

需求2是一样的道理,只是Frame的宽设置为只框住A和C就好了:

然后这时候设置好A的隐藏条件和勾选remove line when blank即可。有些版本的Jasper Studio 对单个组建remove line when blank不工作,那么只需要再Frame里继续再放一个Frame即可。

需求3

需求3就不再继续叙述,就是将AB放在同一个Frame里操作就可以啦。

发表评论

电子邮件地址不会被公开。