jquery dataTable 后台加载数据并分页


使用 dataTable后台加载数据并分页。网上版本很多,但很多都是不能用或者不详细的,这里是已经验证过的。


引用 js文件


<script src="static/ace/js/jquery-2.0.3.min.js"></script>
<script src="static/ace/js/jquery.dataTables.min.js"></script>
<script src="static/ace/js/jquery.dataTables.bootstrap.js"></script>


添加一个table 标签,<tbody></tbody> 可以不用,可以动态加载


<table id="sample-table-2" class="table table-striped table-bordered table-hover">
		<thead>
			<tr>
				<th class="center"><label>
						<input type="checkbox" class="ace" />
						<span class="lbl"></span>
					</label>
				</th>
				<th>名称</th>
				<th>apiKey</th>
				<th>secretKey</th>
				<th><i class="icon-time bigger-110 hidden-480"></i> 创建时间</th>
				<th class="hidden-480">Status</th>
				<th>操作</th>
			</tr>
		</thead>

	</table>

关键的JS代码:


<script type="text/javascript">
	jQuery(function($) {

		//初始化table
		var oTable1 = $('#sample-table-2')
				.dataTable(
						{
							"bPaginate" : true,//分页工具条显示
							//"sPaginationType" : "full_numbers",//分页工具条样式
							"bStateSave" : true, //是否打开客户端状态记录功能,此功能在ajax刷新纪录的时候不会将个性化设定回复为初始化状态  
							"bScrollCollapse" : true, //当显示的数据不足以支撑表格的默认的高度
							"bLengthChange" : true, //每页显示的记录数
							"bFilter" : false, //搜索栏
							"bSort" : true, //是否支持排序功能
							"bInfo" : true, //显示表格信息
							"bAutoWidth" : true, //自适应宽度
							"bJQueryUI" : false,//是否开启主题
							"bDestroy" : true,
							"bProcessing" : true, //开启读取服务器数据时显示正在加载中……特别是大数据量的时候,开启此功能比较好
							"bServerSide" : true,//服务器处理分页,默认是false,需要服务器处理,必须true
							"sAjaxDataProp" : "aData",//是服务器分页的标志,必须有 
							"sAjaxSource" : "${basePath}pushEntity/getTableData",//通过ajax实现分页的url路径。  
							"aoColumns" : [//初始化要显示的列
									{
										"mDataProp" : "id",//获取列数据,跟服务器返回字段一致
										"sClass" : "center",//显示样式
										"mRender" : function(data, type, full) {//返回自定义的样式
											return "<label><input type='checkbox' class='ace' /><span class='lbl'></span></label>"
										}
									},
									{
										"mDataProp" : "appName"
									},
									{
										"mDataProp" : "apiKey"
									},
									{
										"mDataProp" : "secretKey"
									},
									{
										"mDataProp" : "createTime",
										"mRender" : function(data, type, full) {
											return new Date(data)//处理时间显示
											.toLocaleString();
										}
									},
									{
										"mDataProp" : "createTime",
										"mRender" : function(data, type, full) {
											return "<span class='label label-sm label-info arrowed arrowed-righ'>Sold</span>"
										}
									},
									{
										"mDataProp" : "createTime",
										"mRender" : function(data, type, full) {
											return "<div class='visible-md visible-lg hidden-sm hidden-xs action-buttons'><a class='blue' href='#'><i class='icon-zoom-in bigger-130'></i></a><a class='green' href='#'><i class='icon-pencil bigger-130'></i></a><a class='red' href='#'><i class='icon-trash bigger-130'></i></a></div>"
										}
									} ],
							"aoColumnDefs" : [ {//用来设置列一些特殊列的属性
								"bSortable" : false,
								"aTargets" : [ 0 ]
							//第一列不排序
							}, {
								"bSortable" : false,
								"aTargets" : [ 5 ]
							}, {
								"bSortable" : false,
								"aTargets" : [ 6 ]
							} ],
							"oLanguage" : {//语言设置
								"sProcessing" : "处理中...",
								"sLengthMenu" : "显示 _MENU_ 项结果",
								"sZeroRecords" : "没有匹配结果",
								"sInfo" : "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项",
								"sInfoEmpty" : "显示第 0 至 0 项结果,共 0 项",
								"sInfoFiltered" : "(由 _MAX_ 项结果过滤)",
								"sInfoPostFix" : "",
								"sSearch" : "搜索:",
								"sUrl" : "",
								"sEmptyTable" : "表中数据为空",
								"sLoadingRecords" : "载入中...",
								"sInfoThousands" : ",",
								"oPaginate" : {
									"sFirst" : "首页",
									"sPrevious" : "上页",
									"sNext" : "下页",
									"sLast" : "末页"
								},
								"oAria" : {
									"sSortAscending" : ": 以升序排列此列",
									"sSortDescending" : ": 以降序排列此列"
								}
							}
						});

		//全选
		$('table th input:checkbox').on(
				'click',
				function() {
					var that = this;
					$(this).closest('table').find(
							'tr > td:first-child input:checkbox').each(
							function() {
								this.checked = that.checked;
								$(this).closest('tr').toggleClass('selected');
							});

				});

	});
</script>


后台代码:


		// 获取前端过来的参数,下面三个参数是 dataTable默认的,不要随便更改
		Integer sEcho = Integer.valueOf(params.get("sEcho"));// 记录操作的次数 每次加1
		Integer iDisplayStart = Integer.valueOf(params.get("iDisplayStart"));// 起始
		Integer iDisplayLength = Integer.valueOf(params.get("iDisplayLength"));// 每页显示的size

		Map<String, Object> map = new HashMap<String, Object>();
		try {
			// 查询数据,分页的话我这边使用的是 PageHelper,这边不介绍了
			PagedResult<PushEntity> list = pushEntityService.findByUserId(
					pushUser.getId(), iDisplayStart, iDisplayLength);

			// 为操作次数加1,必须这样做
			int initEcho = sEcho + 1;
			
			//返回参数也是固定的
			map.put("sEcho", initEcho);
			map.put("iTotalRecords", list.getTotal());//数据总条数
			map.put("iTotalDisplayRecords", list.getTotal());//显示的条数
			map.put("aData", list.getDataList());//数据集合
		} catch (Exception e) {
			e.printStackTrace();
		}

		return map;



  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jquery.datatable是一款常用的前端表格插件,它支持前端和后端分页两种方式。在后端分页的情况下,数据请求和处理都在服务器端完成,前端只需要展示和呈现数据。 在使用jquery.datatable进行后端分页时,我们需要进行以下步骤: 1.准备后端接口:需要在服务器端提供一个接口来处理数据请求。这个接口需要接受一些参数,例如当前页码、每页显示数量等。接口会根据这些参数查询数据库,并返回相应的数据结果。 2.前端配置datatable插件:在前端页面中,需要引入jquery.datatable的相应脚本文件,并配置datatable的参数。其中,重要的参数包括ajax配置项,用于指定后端接口的URL,以及服务器端接口需要的参数。 3.发送数据请求:当用户操作表格进行翻页或者其他操作时,jquery.datatable会根据配置的ajax参数自动发送数据请求到后端接口。请求参数中包含当前页码、每页显示数量等信息。 4.服务器处理请求:后端接口接收到数据请求后,根据请求参数进行相应的查询和处理操作。可以使用数据库查询语言等方式查询数据库,并返回结果给前端。 5.前端展示数据jquery.datatable会自动根据后端返回的数据结果,生成对应的表格展示。同时,它还提供了丰富的功能和样式配置选项,使得表格的展示更加灵活和美观。 总结来说,使用jquery.datatable进行后端分页需要准备后端接口,配置前端datatable,并进行数据请求和处理。这样就能够实现在前端页面展示由后端数据查询而来的分页表格。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值