比较数据源中的行以打印特定记录

时间:2013-02-07 17:46:01

标签: java jasper-reports ireport

主报告使用包含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类中。

我该怎么做?

1 个答案:

答案 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
}