Index: ssts-web/src/main/java/com/forgon/disinfectsystem/component/grid/GridManagerImpl.java =================================================================== diff -u -r13726 -r13967 --- ssts-web/src/main/java/com/forgon/disinfectsystem/component/grid/GridManagerImpl.java (.../GridManagerImpl.java) (revision 13726) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/component/grid/GridManagerImpl.java (.../GridManagerImpl.java) (revision 13967) @@ -110,11 +110,11 @@ return getObjectList(parameterMap,poClass,"",filterProperties); }else{ GridVo gridVo; - int index = 0; boolean isFull = false; //数据已经满了的标志 List rlist = new ArrayList(); String curSql = ""; String curOrCdt = ""; + int nextStart = -1; //0表示前面的条件还没有获取到数据,此时应该从start开始查找数据 for(String cdt : conditions){ curOrCdt = cdt; cdt = StringUtils.defaultIfEmpty(cdt, "1=1"); @@ -124,9 +124,18 @@ int pageSize = gridVo.getPageSize()==0?20:gridVo.getPageSize(); String orderStr = gridVo.getOrderStr()==null?"":gridVo.getOrderStr(); curSql = gridVo.getSql()==null?cdt:gridVo.getSql(); + if(nextStart == -1){ + nextStart = start; + } + int currentCount = objectDao.countObjectBySql(poClass, curSql); + if(currentCount < nextStart){ + nextStart -= currentCount; + continue; + } List list = objectDao - .findBySql(poClass, curSql, start, pageSize, orderStr); + .findBySql(poClass, curSql, nextStart, pageSize, orderStr); + nextStart = 0; for(Object o : list){ Object find = CollectionUtils.find(rlist, new Predicate(){