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开始 ...
随机推荐
- thinkphp5框架使用总结
因为采用了mvc模式,所以理解上为了简便,把控制中心作为一个浏览对象去处理,其他不要去考虑只把它们当做附属物 一.路径访问方式 http://网址/index.php/模块/控制器/操作.html 其 ...
- gunicorn的功能及使用方法
一.gunicorn的简介Gunicorn是基于unix系统,被广泛应用的高性能的Python WSGI HTTP Server.用来解析HTTP请求的网关服务.它通常是在进行反向代理(如nginx) ...
- Python算法教程_中文版书籍 程序员必备 免费下载
Python算法教程_中文版免费下载地址 提取码:55kh 内容简介 · · · · · · 本书用Python语言来讲解算法的分析和设计.本书主要关注经典的算法,但同时会为读者理解基本算法问题和解 ...
- Linux服务器监控性能测试
1.进程与线程的定义与区别 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位[例如电脑上的不同程序] 线程是进程的一个实体,是cpu调度和分派的基本 ...
- grafana嵌入iframe,去除菜单和上方工具条
1.首先修改grafana的配置:etc/grafana/grafana.ini,修改下面这两个配置为true 2.由于项目使用了nginx,要启用https,需要修改下面这几个配置:(不需要启用ht ...
- 多点DLT (Direct Linear Transformation) 算法
阅读前可以先参看上一篇代数视觉博客: 四点DLT (Dierct Linear Transformation) 算法 对于大于4个点的数据点来进行 DLT 算法变换, 如果数据点的标注都十分准确,那么 ...
- java链接pg数据库remaining connection slots are reserved for non-replication superuser connections问题
最近遇到链接pg数据库报错:remaining connection slots are reserved for non-replication superuser connections.百度说, ...
- 代码随想录训练营day 1 |704 二分查找 27移除算法
LeetCode 704.二分查找(C++) 题目链接 704.二分查找 题目描述:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 ...
- Pycharm 2022.2激活码到2023年7月,亲测有效
33MEHOB8W0-eyJsaWNlbnNlSWQiOiIzM01FSE9COFcwIiwibGljZW5zZWVOYW1lIjoiUG9saXRla25payBNZXJsaW1hdSBNZWxha ...
- Hadoop搭建超级详解
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, ...