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>之间即可



原文链接:http://lyh7609.iteye.com/blog/722148

欢迎留言