上篇记录了主报表中嵌套子报表,用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 子报表中嵌套子报表相关推荐

  1. oracle sql 转换成 hive sql -子查询转关联查询(三).子查询中嵌套子查询

    其他sql格式也在更新中,可直接查看俺的这个系列,要是没有你需要的格式,可在评论或私信我,俺现在一天一看 Oracle转换hive 其他sql格式也在更新中,可直接查看俺的这个系列,要是没有你需要的格 ...

  2. linq 查询中嵌套子查询

    开发工具与关键技术:VS NVC 作者:听民谣的老猫 撰写时间:2019/7/22 18:15 讲一个比较实用的功能____linq 查询中嵌套子查询. 通常我们遇到上面这种情况,我们肯定是想吧后面班 ...

  3. linq查询中嵌套子查询

    为了实现某个模块的功能时,需要查询数据时而这些数据又没有在同一张表里面,为了方便调用数据,就会创建实体类来封装这些数据,由于数据是关联多张表的那么实体类里面就会有多个列表对象,就比如在项目权限管理的权 ...

  4. concat嵌套判断,判断中嵌套子查询出现的问题,

    concat嵌套判断,判断中嵌套子查询出现的问题.其他表也能重现这种问题. str,str1的结果是想要的结果,但是str2加上子查询就会出现追加的情况. 转自 https://ask.csdn.ne ...

  5. MySQL中嵌套子查询删除出错解决方案

    MySQL中嵌套子查询做删除操作会出错,例如下面的SQL: delete from table1 where number in (select number from table2) 执行提示: Y ...

  6. ylb:子查询(嵌套子查询)和子查询(相关子查询)

    ylbtech-SQL Server:SQL Server-子查询(嵌套子查询)和子查询(相关子查询) SQL Server 子查询(嵌套子查询)和子查询(相关子查询). 1,ylb:1,子查询(嵌套 ...

  7. MySQL数据库---子查询insert,update,delete语句中嵌套子查询

    十.子查询的使用(重点) 1.子查询:指的是查询语句,嵌套查询语句---->一般是放在where子句中,表示条件. 2.子查询的应用使用场景: 2.1查询过程中,虽然给了条件,但是条件的结果并不 ...

  8. element父弹窗中嵌套子弹窗,子弹窗被父弹出框的蒙版遮盖

    问题:element弹出框中嵌套弹出框被父弹出框的蒙版遮盖的问题: 解决方法: 在子弹窗添加属性**:append-to-body="true"** 解决问题

  9. oracle sql 转换成 hive sql -三重子查询union all+运算符改为关联查询中嵌套子查询-子查询转关联查询(十一)

    其他sql格式也在更新中,可直接查看这个系列,要是没有你需要的格式,可在评论或私信我 目录 其他sql格式也在更新中,可直接查看这个系列,要是没有你需要的格式,可在评论或私信我 oracle 原sql ...

最新文章

  1. django orm 常用查询筛选
  2. powershell命令大全
  3. 从壹开始 [ Ids4实战 ] 之三║ 详解授权持久化 用户数据迁移
  4. dj鲜生-30-退出用户的登陆
  5. 如何做一张科技感、实用性兼备的大屏
  6. 什么是用户故事 (User Story)?
  7. ubuntu录制屏幕傻瓜操作 ubuntu screen capture
  8. 【土壤分类】基于支持向量机实现土壤分类附matlab代码
  9. Lync 2013安装要点
  10. 74HC573的使用方法
  11. 使用LSTM模型进行产品销售额的预测产品订单效益最大化
  12. 《Matlab算法》 part1 误差分析
  13. ECMWF ERA-interim数据下载——手动下载
  14. 【转载】第三方支付业务如何测试
  15. Python爬虫抓取某音乐网站MP3(下载歌曲、存入Sqlite)
  16. python 怎么将数字转大写_Python将数字转化为中文大写的实例代码
  17. 关于智能车三岔路识别
  18. 解除外链屏蔽,对互联网行业意味着什么?
  19. 【Unity3D】平面绘图——GL与GUI
  20. 开源的业务中台 全渠道一盘货 订单管理系统 OMS

热门文章

  1. Matlab 2017a 安装、破解步骤
  2. 关于富勒-富勒旗舰店- 天猫Tmall.com
  3. 《如何阅读一本书》—[美]莫提默.J.艾德勒、查尔斯.范多伦
  4. 群晖NAS教程(二十一)、利用Docker安装DDNS动态域名解析,自动更新域名解析到公网IP(支持阿里云、腾讯云dnspod、Cloudflare、华为云)
  5. IE浏览器设置代理及例外批处理脚本
  6. AT4379 [AGC027E] ABBreviate
  7. 北京利达消防设备调试软件
  8. Dubbo项目消费者调用提供者报cannot be cast to com.baomidou.mybatisplus.core.metadata.IPage
  9. win10无法打开 巫师3 等steam游戏
  10. imx6ull 以太网