我的主报告包含 5 个字段,其中 4 个是 java.lang.String 类型,最后一个是 java 类型。实用程序列表。我将后者用作子报表 的数据源。我设置了子报表的数据源。
子报表属性:
连接类型:使用数据源表达式
数据源表达式:new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{Field5})
数据传递工作正常(我猜),因为当我在 Java 应用程序中填写报告时。我可以查看传递给字段 1 到 4 的数据,但在字段 5 中,一开始我无法验证,因为 子报表 不显示数据,只显示 列中定义的静态文本标题。
然后当我把子报表的字段放到Page Footer时,发现数据传递成功,问题是Detail 乐队本身没有出现。
为什么不显示?
在子报表属性中,我有:
没有数据时:所有部分,无详细信息
请任何人对此有所了解。
最佳答案
我遇到同样的问题超过 1 天了。在我正在开发的应用程序中,有多个 JasperReports 可以工作。我在添加新的时遇到了这个问题。无论我怎样尝试,Detail 栏中都没有显示任何内容。我尝试了一切,从三次检查填充报告的 Controller ,到升级到最新的 jasperreports
jar 和最新的 iReports
版本。似乎没有任何效果。
问题是报告默认设置为:When No Data: All Sections, No Detail
,这基本上意味着如果没有数据发送到报告,它将显示所有部分,细节除外。
尽管除了我用来测试报告的静态文本之外,我还直接从 Java Controller 传递参数,但直到我将 EXEC [myFunction] $P{parameterId}
添加到报表的 Query Text 属性。该函数是一个简单明了的函数,它将从 Java 传递的 parameterId
作为参数并返回一些东西。 (另外,确保将 The language for the dataset query sql 属性设置为 SQL)。
总而言之,出于某种原因,报告似乎没有将 Java 参数作为数据(因此它显示了所有部分,Detail 除外),所以当我显式调用 SQL返回一些参数并将它们放入我的详细信息页面的函数,它有效。
我希望这对你有帮助,我绞尽脑汁想了 10 个小时才弄明白。
关于java - 子报表的详细信息带未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13024431/