日期:2014-05-17 浏览次数:21126 次
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>之间即可