解决jarsperreport 子报表无数据时不显示右边框的问题

来源:互联网 发布:正装皮鞋品牌 知乎 编辑:程序博客网 时间:2024/06/05 08:52

使用jarsperreport打印报表时,每个报表只能使用一个sql语句。对于复杂的报表我们使用子报表的来实现多个数据源合成一个大报表。那么问题来了,如果子报表数据源查询结果为空的话,那么主报表将显示一片空白(子报表位置)而且没有右边框。遇到此类问题请参看一下设置来解决。

源代码net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport()方法中是这么描述的:

case JRReport.WHEN_NO_DATA_TYPE_NO_DATA_SECTION: {
if (log.isDebugEnabled()) {
log.debug("Fill " + fillerId + ": all sections");
}
scriptlet.callBeforeReportInit();
calculator.initializeVariables(JRVariable.RESET_TYPE_REPORT);
scriptlet.callAfterReportInit();
printPage = newPage();
addPage(printPage);
setFirstColumn();
offsetY = topMargin;
fillBackground();

//请关注此处代码,如果没有子报表没有数据的话,那么会填充Nodata区域。

//所以我们就可以在报表的Nodata区域写上我们要显示空报表的结构
fillNoData();
break;
}

ireport报表开发工具中具体设置见下图:


0 0
原创粉丝点击