主报告使用包含List( parentList )的DataSource。 此列表( parentList )依次包含其他List( childList )。 此 childList 作为DataSource( JRBeanCollectionDataSource )传递给SubReport。
此 childList 包含两列,下面是列表的表格格式。
<pre>TestString | Date</pre>
<pre> abc | 01JAN12 </pre>
<pre> cdf | 31DEC12 </pre>
<pre> fgh | 08JUN12 </pre>
从上表中,应该比较日期以获得具有最新日期(即) cdf 的记录的“TestString”值。
行或记录的比较应该在Jasper报告中完成,而不是在java类中。
我该怎么做?
答案 0 :(得分:3)
你必须在java方面
假设你有pojo结构
public class Parent{
private List<Child> childList;
...
}
public class Child{
String testString;
Date date;
}
执行报告生成的java方法
...
List<Parent> parent = //method for getting datasource
List<String> testStrings = getTestStrings(parent);
...
//pass the list of testStrings to the report
//inside the report, create a parameter of type List
//pass list.get($V{ctr}) to the subreport where ctr is the current count of the subreport, make it start with 0
getTestStrings
方法应该执行类似
private List<String> getTestStrings(List<Parent> parent){
//loop through parent list
//pull each child list then do the sort by date then get(0).getTestString()
//put the value in a list
//return the list
}