当前 two/more 个元素的 header 相等时,Jasper 报告显示组 header
Jasper report displays group header when first two/more elements' headers are equal
从外观内执行查询以生成报告数据。查询正确地将数据分组如下:A=351 的一行(B=757 的行),A=352 的行(B=523/535/等),依此类推。
如果页面中出现的第一行 A=350,那么第二行的值与 350 不同(例如 351),则“351”header 将显示在下一页(仅当然,如果有足够的 351 行可以到达另一页)。
第 2 行和第 3 行应该不在 351 组内,而是在另一个名为 352 的组内。但这种行为并不总是发生在其他页面上。在这种情况下,两个描述是相同的,但第 11 页上仍然显示 352。
这是 JasperReports 中的错误吗?
我以前做程序化排序而不是SQL GROUP BY
,如下,并没有改变任何东西:
Collections.sort(Reports.LIST,
(Comparator<MyObject>) new Comparator<MyObject>() {
public int compare(MyObject o1, MyObject o2) {
if (o1.getA().compareTo(o2.getA()) == 0) {
return o1.getB().compareTo(o2.getB());
} else {
return o1.getA().compareTo(o2.getA());
}
}
}
);
编辑:发现在这种特定情况下,无论行位于何处(352 是本页的最后一行):
Group Expression选项只有描述,没有编号;因此,当相同数字的描述相同时,它不会分隔行。
步骤:
- 打开
iReport
和您的文件;
- 转到
Report Inspector
(左侧窗格)
- 单击所需的组 Header 并打开
Properties
窗格(右侧)
- 在最后一节
Group properties
下,键入正确的 Group Expression
。
从外观内执行查询以生成报告数据。查询正确地将数据分组如下:A=351 的一行(B=757 的行),A=352 的行(B=523/535/等),依此类推。
如果页面中出现的第一行 A=350,那么第二行的值与 350 不同(例如 351),则“351”header 将显示在下一页(仅当然,如果有足够的 351 行可以到达另一页)。
第 2 行和第 3 行应该不在 351 组内,而是在另一个名为 352 的组内。但这种行为并不总是发生在其他页面上。在这种情况下,两个描述是相同的,但第 11 页上仍然显示 352。
这是 JasperReports 中的错误吗?
我以前做程序化排序而不是SQL GROUP BY
,如下,并没有改变任何东西:
Collections.sort(Reports.LIST,
(Comparator<MyObject>) new Comparator<MyObject>() {
public int compare(MyObject o1, MyObject o2) {
if (o1.getA().compareTo(o2.getA()) == 0) {
return o1.getB().compareTo(o2.getB());
} else {
return o1.getA().compareTo(o2.getA());
}
}
}
);
编辑:发现在这种特定情况下,无论行位于何处(352 是本页的最后一行):
Group Expression选项只有描述,没有编号;因此,当相同数字的描述相同时,它不会分隔行。
步骤:
- 打开
iReport
和您的文件; - 转到
Report Inspector
(左侧窗格) - 单击所需的组 Header 并打开
Properties
窗格(右侧) - 在最后一节
Group properties
下,键入正确的Group Expression
。