是DynamicReportBuilder
的新用户,并希望添加一个新列以列出来自数据库的总行数的序列号。
目前,我已经通过ColumnBuilder
进行了研究但是,无法找到可行的解决方案。我现在试过这个,
ColumnBuilder serialNo = ColumnBuilder.getNew();
serialNo.setTitle("S No.");
serialNo.setWidth(60);
serialNo.setFixedWidth(true);
logger.info(count+" Total Records");//Count is the total no of rows
for (int j=1;j<count;j++) {
serialNo.setColumnProperty(j+"",String.class.getName(),j+"");
}
dynamicReportBuilder.addColumn(serialNo.build());
但问题是,它只显示序列号行中的最后一个计数。像这样的东西:
S. No.
3
3
3
3
答案 0 :(得分:1)
如果您希望显示数据源的行数,则jasper报告中的变量值为REPORT_COUNT
,您可以CustomExpression
在报告填写时显示此信息。
serialNo.setCustomExpression(new CustomExpression() {
private static final long serialVersionUID = 1L;
@Override
public Object evaluate(Map fields, Map variables, Map parameters) {
return (Integer) variables.get("REPORT_COUNT");
}
@Override
public String getClassName() {
return Integer.class.getName();
}
});
注意:您当前的代码只是循环所有行并更改 列的
propertyName
和description
,结果是serialNo.setColumnProperty((count-1)+"",String.class.getName(),(count-1)+"")