日期:2014-05-16  浏览次数:20792 次

jQuery插件dataTables使用Ajax通过Action点击下一步传数据
1.前端js代码
1).<script src="/scm/js/jquery-1.3.2.js" type="text/javascript"></script>
2).<script type="text/javascript" language="javascript" src="jqtables/js /jquery.dataTables.js"></script>

			$(function(){
				var oTable = $('#datatable').dataTable({
			        'bJQueryUI': true,
			        "bProcessing":true,
			     	"bServerSide": true,
			   		"iDisplayStart":0,
			   		 "iDisplayLength": 5,
			   		"sAjaxSource":"region_safe_home
_json.action?region.id=1",

			        "sAjaxDataProp":"applyInfoList",
			        "aoColumns": [
			            { "mDataProp": "id" },
			            { "mDataProp": "resource.resourceName" },
			            { "mDataProp": "operateTypeName" },
			            { "mDataProp": "applyUser" },
			            { "mDataProp": "statusName" },
			            { "mDataProp": "createTime"}
			        ],
			        'sPaginationType': 'full_numbers',
			        'bSort':false,
			    });
			});
?3).HTML代码中table的id为datatable

2.Action中
private int curPage;
	private String iTotalRecords; //向前端返回数据需要的JSON对象
	private String iTotalDisplayRecords;//向前端返回数据需要的JSON对象
	private int iDisplayLength;
	private int iDisplayStart;
	
	public String applyHome() throws ServiceException{
		return SUCCESS;
	}
	
	public String applyList() throws ServiceException{
		
		int displayLength = iDisplayLength;
		int displayStart = iDisplayStart ;
		
		applyInfoList = this.getApplyInfoManager().findApplyInfoByRegion(region);
		
		int totalNum = applyInfoList.size();
		
		int pageCount = totalNum/displayLength;
		int remainder = totalNum%displayLength;
		
		if(remainder != 0){
			pageCount = pageCount + 1;
		}
		
		iTotalRecords = totalNum+"";
		iTotalDisplayRecords = totalNum+"";
		
		curPage = displayStart/displayLength+1; 
		
		int startNum = displayStart;
		int endNum = 5;
		
		startNum = displayLength*(curPage-1);
		
		if(remainder != 0){
			if(curPage == pageCount){
				endNum = startNum + remainder;
			}else{
				endNum = startNum+displayLength;
			}			
		}else {
			endNum = startNum+displayLength;
		}
		
		applyInfoList = applyInfoList.subList(startNum, endNum);
		
		return SUCCESS;
	}
?

1 楼 vinsonchan11 2012-03-11  
Hi

我想问一下如果我透过呼叫服务器API取得JSON资料,怎样控制,它那个iDisplayStart
意思就是,如果服务器返回了10000条结果,我怎么告诉DataTable的别全部取来,分页时使用者按到哪,資料才取到哪?

Vinson
2 楼 henry_huangs 2012-03-17  
vinsonchan11 写道
Hi

我想问一下如果我透过呼叫服务器API取得JSON资料,怎样控制,它那个iDisplayStart
意思就是,如果服务器返回了10000条结果,我怎么告诉DataTable的别全部取来,分页时使用者按到哪,資料才取到哪?

Vinson

啊,我想想,应该是从服务端返回JSON数据,iDisplayStart也在服务端传过来的。
3 楼 linuxsnort 2012-04-09  
Hi,您好,请问您那有完整的datatables和Struts的Demo不?我在网上找了好几天了都没有找到,好不容易看到您这里了,但是又不全,如果您有完整的代码的话,麻烦发我一份,谢谢,我的邮箱linuxsnort@163.com。