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开始 ...
随机推荐
- NodeJs设置全局缓存路径 和 安装CNPM
设置全局路径 下建立2个文件夹 如"node_global"及"node_cache" , npm config set prefix "D:\Pro ...
- MRI病变能否预测已获临床缓解的早期RA未来放射学进展
MRI病变能否预测已获临床缓解的早期RA未来放射学进展 Tamai M, et al. EULAR 2015. Present ID: FRI0048. 原文 译文 FRI0048 MRI BONE ...
- 3D模型在线查看工具
3D场景工具推荐:NSDT场景编辑器. glTF Viewer 2.0是一个可以在线查看GLTF格式3D模型的,可以对模型进行显示设置.灯光设置来查看模型效果,除此之外还可以对模型进行性能分析和模型验 ...
- 基于Ubuntu搭建OpenGL开发环境
1. 引言 笔者这里基于Ubuntu 20.04.3 LTS系统,搭建OpenGL开发环境,主要使用的库有GLFW和GLAD GLFW是一个专门针对OpenGL的C语言库,它提供了一些渲染物体所需的最 ...
- day12_内部类&API
1.参数传递 1.1 类名作为形参和返回值 类名--方法形参 方法的形参是类名,需要的是该类的对象:实际传递的是该对象的地址值 类名--返回值 方法的返回值是类名,返回的是该类的对象: ...
- Spanve:一种检测大规模空间转录组学数据中空间变异基因的有效统计方法
文章题目 Spanve: an Effective Statistical Method to Detect Spatially Variable Genes in Large-scale Spati ...
- php的几种接值方式
1.传单个参数 单个参数这种比较简单,例如 想像edit操作里面传递一个id值,如下写法__URL__/edit/id/1 http://localhost/index.php/user/edit/i ...
- vim学习小结
参考书籍<Linux 从入门到精通>第二版(刘忆智 等编著) Vim编辑器 背景:Vim的设计哲学就是让使用者能够在主键盘区完成所有工作. vim是vi的增强版本,vim分为插入和命令两种 ...
- html原声启动本地服务器,用http-server启动本地服务器
第一: 准备node.js环境: 打开cmd,输入:npm install http-server -g 第二: 安装 http-server npm install http-server -g 安 ...
- 【SSO单点系列】(7):CAS4.0 二级域名
CAS4.0 二级域名 一.描述 当cas成功登录后如果访问同一域名下的资源是 被当作同一应用下资源不需要再次请求登录,但是如果二级域名不同会 被当作不同应用在访问 需要请求CAS 在请求时会把TGC ...