S1,首先要在GridPanel中添加PagingToolbar,它跟GridPanel只是包含的关系。本质上它们都共用一个JsonStore,从而产生联系
bbar: new Ext.PagingToolbar({
pageSize: 2,
store: check_list_store,
displayInfo: true,
beforePageText:"第 ",
afterPageText:" 页/共 {0} 页",
displayMsg: '显示从{0}条数据到{1}条数据,共{2}条数据',
emptyMsg: "没有数据"
})
S2,JsonStore一定要指定记录的总数目
var check_list_store = new Ext.data.JsonStore({
url: '<%=basePath%>check/check_list!list',
root: "rows",
totalProperty: 'totalCount',
idProperty: 'studentSubID',
remoteSort: true,
fields:["studentSubID",
"studentNumber",
"projectName",
"taskName",
"studentName",
"submitFile",
"submitFileName",
{name:"submitDate"},
"submitPass","submitScore","submitForUS"]
});
S3,用Firebug查看,你会发现Extjs会自动向服务器POST两个参数,不错这两个参数就是表示显示当前第start条开始,当前页有limit条数据!所以我们只要在服务器端接收这两个数据,并且返回相应的JSON数据就可以了!
private Map session;
public Map getSession() {
return session;
}
public void setSession(Map session) {
this.session = session;
}
//分页
private String limit;
private String start;
public String getLimit() {
return limit;
}
public void setLimit(String limit) {
this.limit = limit;
}
public String getStart() {
return start;
}
public void setStart(String start) {
this.start = start;
}
private Map responseJson;
public Map getResponseJson() {
return responseJson;
}
public void setResponseJson(Map responseJson) {
this.responseJson = responseJson;
}
// SERVICE
public CheckPagingService checkPagingService;
public CheckPagingService getCheckPagingService() {
return checkPagingService;
}
@Resource(name = "checkPagingService")
public void setCheckPagingService(CheckPagingService checkPagingService) {
this.checkPagingService = checkPagingService;
}
// 返回JSON 用到的MAP LIST
Map<String, Object> map = new HashMap<String, Object>();
List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
public String list() throws Exception {
//通过教师 学生提交列表
String number = (String) getSession().get("number");
int count =checkPagingService.getCountOfStudentSubByTeacher(number);
List<studentsub>studentSubList=checkPagingService.getPagingStudentSubByTeacher(number
, getStart()==null?0:Integer.valueOf(getStart()), getLimit()==null?2:Integer.valueOf(getLimit()));
if (studentSubList != null) {
for (StudentSub ss : studentSubList) {
Map<string, object=""> m = new HashMap<string, object="">();
m.put("studentSubID", ss.getStudentSubID());
m.put("studentNumber", ss.getStudent().getNumber());
m.put("studentName", ss.getStudent().getStudentName());
m.put("projectName", ss.getTask().getProject().getProjectName());
m.put("taskName", ss.getTask().getTaskName());
m.put("submitFileName", ss.getFileName());
m.put("submitFile", ss.getFileSrc());
m.put("submitDate", ss.getSubDate());
// 是否审核 评分 ,被展示
m.put("submitPass", ss.getIsPass());
m.put("submitScore", String.valueOf(ss.getScore()));
m.put("submitForUS", ss.getIsForUS());
list.add(m);
}
}
map.put("totalCount",count);
map.put("rows", list);
this.setResponseJson(map);
return "list";
}
Service层
public List<StudentSub> getPagingStudentSubByTeacher(final String number,final int index, final int pageSize)throws Exception{
return getStudentSubDAO().getPagingStudentSubByTeacher(number, index, pageSize);
}
DAO层
public List<StudentSub> getPagingStudentSubByTeacher(final String number,final int index,
final int pageSize){
List resultList=this.getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session s) throws HibernateException,SQLException {
Query q=s.createQuery("from StudentSub ss where ss.task.project.teacher
.number="+number+"order by ss.isPass asc");
q.setFirstResult(index);
q.setMaxResults(pageSize);
List list=q.list();
return list;
}
});
return resultList;
}