jasper report 子报表中嵌套子报表
上篇记录了主报表中嵌套子报表,用json数据源设计报表,没有问题了。
本篇记录下子报表中再嵌套子报表(即孙报表)怎么实现。
思路:把需要再嵌套孙报表的子报表sub_report3,当做主报表设计,内嵌的孙报表同样用分组布局放置。
1、设计sub_report3报表布局
如下图所示:
建立了2个group,要嵌入4个子报表。
sub_report3的json数据源如下:
{"data":{"isImport":"true","applyer":"张三","applyTime":"2020-09-26 10:11:11","chiefer":"李四","chiefTime":"2020-09-26 11:11:11","pm":"王五","pmTime":"2020-09-26 12:11:11","lineItems1":[{"isAgree":"同意","signRemark":"这就是我要发表的意见,听不听1","userName":"紫薯1"},{"isAgree":"同意","signRemark":"这就是我要发表的意见,听不听2","userName":"紫薯"},{"isAgree":"同意","signRemark":"这就是我要发表的意见,听不听3","userName":"紫薯2"}],"lineItems2":[{"isAgree":"不同意","signRemark":"这就是我要发表的意见,听不听4","userName":"紫薯1"},{"isAgree":"同意","signRemark":"这就是我要发表的意见,听不听6","userName":"紫薯3"}],"lineItems3":[{"isAgree":"不同意","signRemark":"这就是我要发表的意见,听不听5","userName":"紫薯2"},{"isAgree":"同意","signRemark":"这就是我要发表的意见,听不听7","userName":"紫薯4"},{"isAgree":"同意","signRemark":"这就是我要发表的意见,听不听8","userName":"紫薯5"}],"lineItems4":[{"isAgree":"同意","signRemark":"这就是我要发表的意见,听不听9","userName":"紫薯6"},{"isAgree":"同意","signRemark":"这就是我要发表的意见,听不听2","userName":"紫薯3"},{"isAgree":"同意","signRemark":"这就是我要发表的意见,听不听6","userName":"紫薯4"}]}
}
布局设计的几点:
1)本例中主报表的内容宽度:550px,所有子报表的内容宽度也是550px。所以各个元素的设计宽度都是按照这个尺寸来的。
部门一列:100px;意见列:360px(4个90px);签字列:90px
2)部门列:StaticText,高度不固定
Stretch Type属性:ContainerHeight,边框:上、左、右有边框线,底部没有。
2、创建4个子报表
4个主报表设计如下图所示:
子报表的页面设置:margins 都设置为0
3、子报表与孙报表数据关联
1)添加子报表控件,选择已经存在的子报表文件:
2)Use a JRDatasource expression:
((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("lineItems1")
3)设置Dataset Parameters
预览sub_report3报表:
4、关联主报表的数据源
首先将数据整合在同一个json数据源,如下:
test3是sub_report3的数据源。
{"data":{"topic":"我就是可爱的topic","serialNo":"A98K-002-001","isImport":"true","isChecked":"false","noReason":"之所以没选中,是为了测试","test1":[{"field1":"我是field1-row1","field2":"我是field2-row1","field3":"我是field3-row1","field4":"我是field4-row1","field5":"我是field5-row1"},{"field1":"我是field1-row2","field2":"我是field2-row2","field3":"我是field3-row2","field4":"我是field4-row2","field5":"我是field5-row2"},{"field1":"我是field1-row3","field2":"我是field2-row3","field3":"我是field3-row3","field4":"我是field4-row3","field5":"我是field5-row3"}],"test2":[{"name":"MISS李","tel":"12345678","email":"12345689@qq.com"},{"name":"MISS张","tel":"12345679","email":"12356789@qq.com"},{"name":"MISS王","tel":"12345689","email":"12346789@qq.com"}],"test3":{"isImport":"true","applyer":"张三","applyTime":"2020-09-26 10:11:11","chiefer":"李四","chiefTime":"2020-09-26 11:11:11","pm":"王五","pmTime":"2020-09-26 12:11:11","lineItems1":[{"isAgree":"同意","signRemark":"这就是我要发表的意见,听不听1","userName":"紫薯1"},{"isAgree":"同意","signRemark":"这就是我要发表的意见,听不听2","userName":"紫薯"},{"isAgree":"同意","signRemark":"这就是我要发表的意见,听不听3","userName":"紫薯2"}],"lineItems2":[{"isAgree":"不同意","signRemark":"这就是我要发表的意见,听不听4","userName":"紫薯1"},{"isAgree":"同意","signRemark":"这就是我要发表的意见,听不听6","userName":"紫薯3"}],"lineItems3":[{"isAgree":"不同意","signRemark":"这就是我要发表的意见,听不听5","userName":"紫薯2"},{"isAgree":"同意","signRemark":"这就是我要发表的意见,听不听7","userName":"紫薯4"},{"isAgree":"同意","signRemark":"这就是我要发表的意见,听不听8","userName":"紫薯5"}],"lineItems4":[{"isAgree":"同意","signRemark":"这就是我要发表的意见,听不听9","userName":"紫薯6"},{"isAgree":"同意","signRemark":"这就是我要发表的意见,听不听2","userName":"紫薯3"},{"isAgree":"同意","signRemark":"这就是我要发表的意见,听不听6","userName":"紫薯4"}]}}
}
整合到主报表后,预览,报错:
抛出 net.sf.jasperreports.engine.JRException: Resource not found at: xxx.jasper 异常。
原因:主报表找不到孙报表的编译文件
解决办法:
在主报表中设置变量:SUBREPORT_DIR(若不存在则新建),代表子报表模板文件的真实路径。
设置子报表的属性Subreport Expression 的值为:$P{SUBREPORT_DIR} + "/sub_report3.jasper",通过程序动态设置SUBREPORT_DIR,使得主报表 能够获得子报表模板文件的真实路径。
传递参数:
将SUBREPORT_DIR参数一层一层传递下去。
这样子报表嵌套子报表就可以显示数据啦
jasper report 子报表中嵌套子报表相关推荐
- oracle sql 转换成 hive sql -子查询转关联查询(三).子查询中嵌套子查询
其他sql格式也在更新中,可直接查看俺的这个系列,要是没有你需要的格式,可在评论或私信我,俺现在一天一看 Oracle转换hive 其他sql格式也在更新中,可直接查看俺的这个系列,要是没有你需要的格 ...
- linq 查询中嵌套子查询
开发工具与关键技术:VS NVC 作者:听民谣的老猫 撰写时间:2019/7/22 18:15 讲一个比较实用的功能____linq 查询中嵌套子查询. 通常我们遇到上面这种情况,我们肯定是想吧后面班 ...
- linq查询中嵌套子查询
为了实现某个模块的功能时,需要查询数据时而这些数据又没有在同一张表里面,为了方便调用数据,就会创建实体类来封装这些数据,由于数据是关联多张表的那么实体类里面就会有多个列表对象,就比如在项目权限管理的权 ...
- concat嵌套判断,判断中嵌套子查询出现的问题,
concat嵌套判断,判断中嵌套子查询出现的问题.其他表也能重现这种问题. str,str1的结果是想要的结果,但是str2加上子查询就会出现追加的情况. 转自 https://ask.csdn.ne ...
- MySQL中嵌套子查询删除出错解决方案
MySQL中嵌套子查询做删除操作会出错,例如下面的SQL: delete from table1 where number in (select number from table2) 执行提示: Y ...
- ylb:子查询(嵌套子查询)和子查询(相关子查询)
ylbtech-SQL Server:SQL Server-子查询(嵌套子查询)和子查询(相关子查询) SQL Server 子查询(嵌套子查询)和子查询(相关子查询). 1,ylb:1,子查询(嵌套 ...
- MySQL数据库---子查询insert,update,delete语句中嵌套子查询
十.子查询的使用(重点) 1.子查询:指的是查询语句,嵌套查询语句---->一般是放在where子句中,表示条件. 2.子查询的应用使用场景: 2.1查询过程中,虽然给了条件,但是条件的结果并不 ...
- element父弹窗中嵌套子弹窗,子弹窗被父弹出框的蒙版遮盖
问题:element弹出框中嵌套弹出框被父弹出框的蒙版遮盖的问题: 解决方法: 在子弹窗添加属性**:append-to-body="true"** 解决问题
- oracle sql 转换成 hive sql -三重子查询union all+运算符改为关联查询中嵌套子查询-子查询转关联查询(十一)
其他sql格式也在更新中,可直接查看这个系列,要是没有你需要的格式,可在评论或私信我 目录 其他sql格式也在更新中,可直接查看这个系列,要是没有你需要的格式,可在评论或私信我 oracle 原sql ...
最新文章
- django orm 常用查询筛选
- powershell命令大全
- 从壹开始 [ Ids4实战 ] 之三║ 详解授权持久化 用户数据迁移
- dj鲜生-30-退出用户的登陆
- 如何做一张科技感、实用性兼备的大屏
- 什么是用户故事 (User Story)?
- ubuntu录制屏幕傻瓜操作 ubuntu screen capture
- 【土壤分类】基于支持向量机实现土壤分类附matlab代码
- Lync 2013安装要点
- 74HC573的使用方法
- 使用LSTM模型进行产品销售额的预测产品订单效益最大化
- 《Matlab算法》 part1 误差分析
- ECMWF ERA-interim数据下载——手动下载
- 【转载】第三方支付业务如何测试
- Python爬虫抓取某音乐网站MP3(下载歌曲、存入Sqlite)
- python 怎么将数字转大写_Python将数字转化为中文大写的实例代码
- 关于智能车三岔路识别
- 解除外链屏蔽,对互联网行业意味着什么?
- 【Unity3D】平面绘图——GL与GUI
- 开源的业务中台 全渠道一盘货 订单管理系统 OMS
热门文章
- Matlab 2017a 安装、破解步骤
- 关于富勒-富勒旗舰店- 天猫Tmall.com
- 《如何阅读一本书》—[美]莫提默.J.艾德勒、查尔斯.范多伦
- 群晖NAS教程(二十一)、利用Docker安装DDNS动态域名解析,自动更新域名解析到公网IP(支持阿里云、腾讯云dnspod、Cloudflare、华为云)
- IE浏览器设置代理及例外批处理脚本
- AT4379 [AGC027E] ABBreviate
- 北京利达消防设备调试软件
- Dubbo项目消费者调用提供者报cannot be cast to com.baomidou.mybatisplus.core.metadata.IPage
- win10无法打开 巫师3 等steam游戏
- imx6ull 以太网