struts2+Extjs3.0 实现简单分页

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;
}

转载于:https://my.oschina.net/u/581035/blog/78671

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值