diff --git a/ureport2-core/src/main/java/com/bstek/ureport/build/Context.java b/ureport2-core/src/main/java/com/bstek/ureport/build/Context.java index 76ff9d6..3c32efb 100644 --- a/ureport2-core/src/main/java/com/bstek/ureport/build/Context.java +++ b/ureport2-core/src/main/java/com/bstek/ureport/build/Context.java @@ -48,7 +48,7 @@ public class Context { private int pageIndex; private int totalPages; private boolean doPaging; - private List currentPageRows; + private Map> currentPageRowsMap=new HashMap>(); private Map datasetMap; private ApplicationContext applicationContext; private ReportBuilder reportBuilder; @@ -289,11 +289,11 @@ public class Context { public void setPageIndex(int pageIndex) { this.pageIndex = pageIndex; } - public void setCurrentPageRows(List currentPageRows) { - this.currentPageRows = currentPageRows; + public void setCurrentPageRows(int pageIndex,List currentPageRows) { + currentPageRowsMap.put(pageIndex, currentPageRows); } - public List getCurrentPageRows() { - return currentPageRows; + public List getCurrentPageRows(int pageIndex) { + return currentPageRowsMap.get(pageIndex); } public void addExistPageFunctionCells(Cell cell) { diff --git a/ureport2-core/src/main/java/com/bstek/ureport/build/paging/BasePagination.java b/ureport2-core/src/main/java/com/bstek/ureport/build/paging/BasePagination.java index d920514..a4df132 100644 --- a/ureport2-core/src/main/java/com/bstek/ureport/build/paging/BasePagination.java +++ b/ureport2-core/src/main/java/com/bstek/ureport/build/paging/BasePagination.java @@ -49,7 +49,7 @@ public abstract class BasePagination { List columns=report.getColumns(); Context context=report.getContext(); context.setPageIndex(pageIndex); - context.setCurrentPageRows(rows); + context.setCurrentPageRows(pageIndex,rows); Map> rowColCellsMap=report.getRowColCellMap(); List reportRows=report.getRows(); for(int i=0;i> dataList, Context context,Cell currentCell) { - return context.getCurrentPageRows().size(); + int pageIndex=currentCell.getRow().getPageIndex(); + if(pageIndex==0)pageIndex=1; + return context.getCurrentPageRows(pageIndex).size(); } @Override diff --git a/ureport2-core/src/main/java/com/bstek/ureport/expression/model/expr/set/CellExpression.java b/ureport2-core/src/main/java/com/bstek/ureport/expression/model/expr/set/CellExpression.java index 93f8ee5..f9b1480 100644 --- a/ureport2-core/src/main/java/com/bstek/ureport/expression/model/expr/set/CellExpression.java +++ b/ureport2-core/src/main/java/com/bstek/ureport/expression/model/expr/set/CellExpression.java @@ -60,7 +60,9 @@ public class CellExpression extends BaseExpression { } public ExpressionData computePageCells(Cell cell,Cell currentCell,Context context) { - List pageRows=context.getCurrentPageRows(); + int pageIndex=cell.getRow().getPageIndex(); + if(pageIndex==0)pageIndex=1; + List pageRows=context.getCurrentPageRows(pageIndex); List list=new ArrayList(); Map> cellMap=context.getReport().getRowColCellMap(); List columns=context.getReport().getColumns(); @@ -81,7 +83,9 @@ public class CellExpression extends BaseExpression { } protected List fetchPageCells(Cell cell,Cell currentCell,Context context){ - List pageRows=context.getCurrentPageRows(); + int pageIndex=cell.getRow().getPageIndex(); + if(pageIndex==0)pageIndex=1; + List pageRows=context.getCurrentPageRows(pageIndex); Map> cellMap=context.getReport().getRowColCellMap(); List columns=context.getReport().getColumns(); List list=new ArrayList();