JQuery的dataTable实现分页
关于dataTable基本使用有很多帖子说的很详细,在此不做详述。
最近使用dataTable处理服务器返回分页数据时遇到问题,问题解决后有一些心得分享一下:
1. 如果打开界面通过dataTable给表格填充数据,必须把dataTable调用放在document.ready方法里面,或者放在$(function(){ 。。。 });里面二者等价。
2. 最简单的使用,服务器按照dataTable要求的分页结构返回分页信息,dataTable直接解析并使用
1 var list = $('#personList').dataTable({
2 'searching' : false,
3 'ordering' : false,
4 "bLengthChange": false,
5 "iDisplayLength": 10,
6 "processing": true,
7 "serverSide": true,
8 "sServerMethod": "get",
9 'sAjaxSource' : '/test/listPerson',
10 'aoColumns' : [ {
11 'mDataProp' : 'name'
12 }, {
13 'mDataProp' : 'status'
14 },{
15 'mDataProp' : 'position'
16 }, {
17 'mDataProp' : 'grade'
18 }
19 ]
20 });
这种情况服务器端返回的数据结构必须是:
1 public class Page{
2 private int sEcho;
3 private int iTotalRecords;
4 private int iTotalDisplayRecords;
5 private int iDisplayStart;
6 private int iDisplayLength;
7 private String sSearch;
8 private List<Object> aaData = new ArrayList<>();
9
10 }
前台收到page对象后会解析成dataTable的page对象,取出aaData作为表数据。
3. 我们现在服务端基本都是有结构化的返回结构体,如:
{"retCode":"00000", "retInfo":"Success", "data":{"sEcho":1, "iTotalRecords":12,"iTotalDisplayRecords":10,"iDisplayStart":0,"iDisplayLength":10,"sSearch":null, "aaData":[{"name":"lily","satus":"normal","position":"pm"}]}}
这种数据结构不能直接传给dataTable处理,无法识别。我们需要通过fnServerData对数据进行处理。
list = $('#personList').dataTable({
'searching' : false,
'ordering' : false,
"bLengthChange": false,
"iDisplayLength": 10,
"processing": true,
"serverSide": true,
"sServerMethod": "get",
'sAjaxSource' : '/test/person/list',
'fnServerData' : function (sSource, aoData, fnCallback) {
$.ajax({
"type": "GET",
"url": sSource,
"dataType": "json",
"data": aoData,
"success": function (result) {
if (result.retCode == "00000") {
fnCallback(result.data);
} else {
alert("Fail to get data!")
}
}
});
},
'aoColumns' : [ {
'mDataProp' : 'name'
}, {
'mDataProp' : 'status'
},{
'mDataProp' : 'position'
}
]
//$_GET['sColumns']将接收到aoColumns传递数据
});
fnServerData主要是在将请求发送到server之前对数据进行处理,在收到server返回后对数据进行处理,方便dataTable填充数据。
'fnServerData' : function (sSource, aoData, fnCallback) 三个参数,sSource会传入dataTable的sAjaxSource,aoData会传入dataTable组织好的要发给server的数据,包括分页信息,如果不把这些数据继承下来发给服务,分页的请求信息会丢失,会导致server收到的分页信息中的iDisplayLength值为0,将aoData传入ajax的data属性以继承传递,fnCallback是dataTable后续处理数据的回调函数,在ajax的success指定的方法中将数据处理(对于我们上面的返回数据结构,从返回结果中取出data作为dataTable的接收数据)后的结果传递给fnCallback方法。
4. 如果在表格绘制完成后需要使用返回的表格数据做其他操作
使用dataTable的fnDrawCallback参数设置处理函数
1 var list = $('#personList').dataTable({
2 'searching' : false,
3 'ordering' : false,
4 "bLengthChange": false,
5 "iDisplayLength": 10,
6 "processing": true,
7 "serverSide": true,
8 "sServerMethod": "get",
9 'sAjaxSource' : '/test/listPerson',
10 'aoColumns' : [ {
11 'mDataProp' : 'name'
12 }, {
13 'mDataProp' : 'status'
14 },{
15 'mDataProp' : 'position'
16 }, {
17 'mDataProp' : 'grade'
18 }
19 ],
20 'fnDrawCallback': function (result) {
21 var json=jQuery.parseJSON(result.jqXHR.responseText);
22 /** 使用返回对象 json 的代码**/23 }
24 });
fnDrawCallback的调用不会影响表格数据显示,因为此时表格已经绘制完成。
JQuery的dataTable实现分页的更多相关文章
- Spring Data Jpa+SpringMVC+Jquery.pagination.js实现分页
本博客介绍基于Spring Data这款orm框架加上Jquery.pagination插件实现的分页功能. 介绍一下Spring Data框架 spring Data : Spring 的一个子项目 ...
- 第二百零九节,jQuery EasyUI,Pagination(分页)组件
jQuery EasyUI,Pagination(分页)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 Pagination(分页)组件的使 ...
- jquery自定义插件实现分页效果
这节介绍如何自定义jquery插件,实现分页效果,话不多说,先看看实现的效果: 分页插件 实现的代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTM ...
- 将DataTable进行分页并生成新的DataTable
/// <summary> /// 将DataTable进行分页并生成新的DataTable /// </summary> /// <param name="d ...
- jQuery的datatable的destroy属性,和$("#test").dataTable().fnDestroy();区别,两者的区别
jQuery的datatable的destroy属性,和$("#test").dataTable().fnDestroy();区别,两者的区别. 1 destroy属性是,销毁实例 ...
- thinkphp5配合datatable插件分页后端处理程序
thinkphp5配合datatable插件分页后端处理程序第一版DataTable.php v.1.0 <?php use think\Db; /** * DataTable.php. */ ...
- 使用jQuery开发datatable分页表格插件
当系统数据量很大时,前端的分页.异步获取方式就成了较好的解决方案.一直以来,我都希望使用自己开发的 jquery 插件做系统. 现在,学习了 jquery 插件开发之后,渐渐地也自己去尝试着开发一些简 ...
- jquery datatable客户端分页保持
请加入下面注释的参数,并强制刷新浏览器,即可解决,关键配置: "bStateSave":true, $("#tableID").DataTable({ &quo ...
- jquery plug-in DataTable API中文文档参考
前言:最近在做一个WEB后台,无意中发现这个插件,试用了一下觉得不错,但网上关于它的资料大多不全,所以利用一些时间将其API文档翻了一下,发在园子里供大家参考.(p.s:个人E文水平很差,对着灵格斯翻 ...
- 使用ASP.NET+Jquery DataTables的服务器分页
(1)先建立表,看看表结构 (2)建立存储过程 DataTables是服务器分页,GetWxUsers存储过程使用了4个参数 (1) @start--表示当前第几页,例如第3页,start是从0开始 ...
随机推荐
- OpenLayers结合JSTS实现空间运算
1. 引言 空间运算利用几何函数来接收输入的空间数据,对其进行分析,然后生成输出数据,输出数据为针对输入数据执行分析的派生结果. 可从空间运算中获得的派生数据包括: 作为输入要素周围缓冲区的面 作为对 ...
- Jmix- 业务系统高效开发的少代码平台
企业在数字化转型的过程中,都面临将现有的业务流程进行"软件化"的过程.然而,在我们的印象中,通常会觉得针对业务系统的软件开发不是特别高效.这背后有很多原因,从开发角度看,有一个主要 ...
- 【FPGA学习】MATLAB与FPGA实现FIR滤波器
本篇博客记录一下在matlab设计和在FPGA平台实现FIR滤波器的方法,平台是Xilinx的ZYNQ 参考: AMBA AXI-Stream Protocol Specification 使用mat ...
- javaSE学习一
java基础 java是一种强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用. java的数据类型有两大类:基本数据类型和引用类型(类.接口.数组) 八大基本数据类型: 1.整 ...
- Bug Bash测试
愿望 养成参加 Bug Bash 的习惯,就像养成到点就吃饭一样的习惯. 一.Bug Bash 名词解释 A Bug Bash is a collaborative effort across o ...
- Windows环境同时安装多个版本的Python解释器(python2和python3)
https://blog.csdn.net/qq_21583139/article/details/125881382 出现问题: 更新pip 操作后出现,pip报错,应该是升级到最新pip版本然后和 ...
- php 允许跨域
1.控制器 header("Access-Control-Allow-Origin: *"); class Index extends Api {} 2.app/admin/con ...
- 微信内h5调用支付
在做公众号商城的时候,需要用到调用微信支付,这是微信官方文档教程 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&in ...
- 2022-05-26内部群每日三题-清辉PMP
1.在执行关键路径上的一项活动时,职能主管将涉及这个活动的两个项目资源调去支持解决某个应急情况,项目经理应该怎么做? A.实施应急计划 B.快速跟进关键路径 C.与职能经理协商分配替代资源 D.将该问 ...
- poi 5.2 导出
如果能给你带来帮助,不胜荣幸,如果有错误也请批评指正. 1:maven 依赖,现在好多都是用的poi 3.6 和 poi3.9 的jar,项目升级了,现在得用5.x的了,所以就用5.x的给大家简单的演 ...