0

主报告使用一个 DataSource,其中包含一个 List( parentList )。这个 List( 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 类中。

我怎样才能做到这一点 ?

4

1 回答 1

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
}
于 2013-02-08T02:35:18.000 回答