使用列表列表创建子报表

2023-11-30

我有一个目标列表,每个目标都有另一个 ArrayList。我希望使用子报表显示子 ArrayList 中的详细信息。我想要子 ArrayList 中的每个对象都有一个子报告。

我面临的问题是,我似乎找不到一种方法来指定子报表的 ArrayListas 数据源。尝试创建数据源时,我无法选择构建列表的数据集的字段,只能选择主报告的字段。

可以在 jasper 报告中执行此操作吗?我已经坚持这个问题有一段时间了。


根据给出的信息,这将是答案。

主豆(你的目标?),包含List其他豆子(SubBean).

public class Bean {
  private String var1;
  private List<SubBean> subBeans;
  public String getVar1() {
    return var1;
  }
  public void setVar1(String var1) {
    this.var1 = var1;
  }
  public List<SubBean> getSubBeans() {
    return subBeans;
  }
  public void setSubBeans(List<SubBean> subBean) {
    this.subBeans = subBean;
  }
}

Sub bean

public class SubBean {
  private String var2;
  public SubBean(String var2){
    this.var2 = var2;
  }
  public String getVar2() {
    return var2;
  }
  public void setVar2(String var2) {
    this.var2 = var2;
  }
}

如何将 SubBean 列表传递给子报表。

  1. 您需要主报告中的 subBeans 字段。

    <field name="subBeans" class="java.util.List"/>
    
  2. 我建议您将 .jasper 文件的位置作为参数传递(注意 jasper 报告需要绝对路径)es。在主要报告中

    <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false"/>
    

并在java中传递它(在示例中,工作目录中的子文件夹“jasper”是subreport.jasper的位置)

paramMap.put("SUBREPORT_DIR", new File("jasper").getAbsolutePath() + File.separator);
  1. 现在只需从主报告中调用您的子报告(需要编译成.jasper),如下所示。

    <subreport>
      <reportElement x="105" y="4" width="400" height="100"/>
      <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{subBeans})]]></dataSourceExpression>
      <subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "subreport.jasper"]]></subreportExpression>
    </subreport>
    

Hence:

我正在创建一个新的JR数据源对于通过的子报告List of SubBean在当前的Bean

new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{subBeans})

表示编译后的subreport.jasper的绝对位置

$P{SUBREPORT_DIR} + "subreport.jasper"

所以现在在您的子报告中您可以使用该字段:var2 of the SubBean,只需在subreport.jrxml中这样定义即可

<field name="var2" class="java.lang.String"/>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用列表列表创建子报表 的相关文章

随机推荐

  • Android EditText setError() 无法按预期工作

    我有问题setError on EditText 当活动打开时 它会检查某些字段是否为空 如果为空 则在其上设置错误消息 但是 只有当我在字段中写入一些文本然后将其删除时 才会显示感叹号图标 如果我失去对该字段的关注 该图标将再次消失 两个
  • Hadoop Mapreduce 控制台输出说明

    我是hadoop环境的新手 我已经设置了2节点hadoop集群 然后我运行示例 MapReduce 应用程序 实际上是字数 然后我得到这样的输出 File System Counters FILE Number of bytes read
  • 关于 unique_ptr 性能

    我经常读到 在大多数情况下 unique ptr 会比 share ptr 更受青睐 因为 unique ptr 是不可复制的 并且具有移动语义 由于复制和引用计数 shared ptr 会增加开销 但是当我在某些情况下测试 unique
  • Simba ODBC 连接到增量表并使用 .Net C# 从增量格式表读取数据

    我正在尝试使用 C 通过 simba odbc 驱动程序从增量格式表中读取数据 增量格式表示例 已按照中的说明下载并配置 simba odbchttps www simba com products Spark doc ODBC Insta
  • 硬件加速活动 - 如何获取 OpenGL 纹理大小限制?

    我正在尝试在 Honeycomb 中启用硬件加速 并在 Canvas 上显示一些位图 一切正常 但对于大型位图 一维 gt 2048 我在日志中收到错误 OpenGLRenderer 位图太大 无法上传到纹理中 我知道这是因为硬件限制 如果
  • JSF commandButton - 将 POST 参数传递到外部站点

    我需要一个将我重定向到不同站点并发送 POST 参数的链接 就像是
  • php文件上传问题

    这段代码在我的本地主机上运行正常 我正在使用 xampp 1 7 3 但是当我把它放入实时服务器时它显示Possible file upload attack upload 是服务器上 public html 文件夹下的文件夹 我可以通过该
  • NodeJS 数组同步?

    var membersStatArray membersArray forEach function member db doneTodo find victor id member id then arrayOfUserVictories
  • PHP、MySQL 和时区

    我正在尝试在我的应用程序中集成时区系统 到目前为止 我确实努力避免制作时区感知应用程序 但它现在是强制性要求 所以别无选择 时区这件事超出了我的想象 我已经阅读了 PHP net 和其他网站上的几个主题 包括但不限于 SO 但我始终无法掌握
  • Java - 如何从 Android 中的 azure 移动服务检索和使用单个值

    我是 azure 的新手 但我知道某些事情 例如如何检索数据并将数据存储到 azure 为此我遵循了 azure 官方文档 链接在这里 https azure microsoft com en in documentation articl
  • 如何使用 C# 读取和标记(突出显示)pdf 文件

    我有一个 pdf 文件 我正在逐页阅读该文件 现在从第 4 页开始 我的 pdf 包含帐单信息 这些帐单信息位于示例部分下 比如说一个是本地帐单信息 另一个是 STD 帐单信息等 现在根据我的要求 如果用户想要验证本地账单信息 我的代码应该
  • 在 MVC 4 中将图像附加到 ActionLink

    我在 MVC 4 应用程序中使用带有 id 的 ActionLink 并在 css 中分配 actionLink id 图像 但实际上我做错了 不管用 这是我的代码 div class logo container Html ActionL
  • 设置 NSManagedObject 上双精度属性的值

    我正在尝试在我的应用程序上实现地图功能 但是 我希望将纬度和经度从存储在核心数据中的对象传递到地图中 但是 当我启动应用程序时 我在设置对象的初始值时遇到问题 到目前为止 我已经尝试了两种不同的方法 每种方法收到的错误都是 将 double
  • 从互联网上的txt文件中获取文本

    我有一个 uwp 我需要从互联网上保存的 txt 文件中获取文本以进行字符串下载文件并将文本获取到字符串时遇到问题 这是我的代码 var webRequest WebRequest Create http yourUrl using var
  • missViewControllerAnimated自定义动画

    我试图用自定义动画调用missViewControllerAnimated 但它似乎不起作用 当我呈现视图控制器时 如下所示 cameraUI UIImagePickerController cameraUI delegate self c
  • WinSxS:如何依赖特定版本的gdiplus.dll?

    我需要添加对特定版本的 GDIPlus 的依赖项 这是我想要的 GDI 版本 我想确保我使用此版本是出于特定的兼容性原因 我已将程序集清单添加到我的可执行文件中 定义了对版本的依赖关系GdiPlus
  • Visual Studio 调试控制台有时保持打开状态并且无法关闭

    编辑 3 微软已经发布了对此问题的 修复 可用here 我还没有时间测试它 但欢迎那些想要测试的人在这里留下他们的反馈 有时 当我从 Visual Studio 运行应用程序并且它崩溃或使用调试菜单中的停止按钮 调试 gt 停止调试 Shi
  • 几天后刷新令牌已自动过期

    我们在 Google API 控制台上有 Google OAuth2 Web 客户端 在 Oauth Web 客户端的帮助下 我们为每个用户获取刷新令牌 通过使用 Web 身份验证和 Concert Screen 我们将收到的刷新令牌存储到
  • 想要 javascript 中 $bhai 的值

    bin sh echo Content type text html echo echo echo echo echo echo
  • 使用列表列表创建子报表

    我有一个目标列表 每个目标都有另一个 ArrayList 我希望使用子报表显示子 ArrayList 中的详细信息 我想要子 ArrayList 中的每个对象都有一个子报告 我面临的问题是 我似乎找不到一种方法来指定子报表的 ArrayLi