日期:2014-05-17  浏览次数:21052 次

JasperReport 根据内容动态调整报表行高

JasperReport结合IReport如何设计出一个能根据内容自动调整行高的报表呢?

?

有人说目前只有detail 这个Band才可以实现。其实无论哪个band都可以实现这个功能!

主要是通过以下几个元素实现:

1.Stretch with overflow 针对TextFileld

2.Stretch Type:relative to tallest object/relative to band height

3.Position type:Float/Fix relative to top/Fix relative to bottom

4.element group(为元素分组)

?

一、先看看detail中根据内容自动调整行高的办法

假如detail band中设计时只有一行,那么选中所有元素,在属性中的Stretch Type中选中relative to band height,Position type中选中Fix relative to top ;勾选 Stretch with overflow即可。

但是,如果detail band中设计时不止一行,有两行以上,按照以上的设计无论Stretch type /Position type选中什么值,同时勾选Stretch with overflow.运行出来都是不行的,有些行无法看到,要吗就是行与行之间的内容有覆盖的现象。

这时,一定要运用上element group(注意不是Report group)。假定设计时有两行吧,把这两行分别归为一个element group,在IReport中按住shift键,选中第一行,右键单击选择“group selected elements”,在属性Stretch Type中选中relative to tallest object,Position type中选中Float ;勾选 Stretch with overflow即可。第二行也做类似操作。


?

二、Title band或header band中如何根据内容自动调整行高

其实设置方法同Detail完全一样,单行是可以不归element group(当然也可归为一个element group),多行必须归类element group


?

注意:IReport 对Element group的控制有点问题,不行的话就直接改源码,将相应的TexitField或label归到<elementgroup></elementgroup>之间即可