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开始 ...
随机推荐
- 基于C++的OpenGL 04 之变换
1. 概述 本文基于C++语言,描述OpenGL的变换 前置知识可参考: 基于C++的OpenGL 03 之纹理 - 当时明月在曾照彩云归 - 博客园 (cnblogs.com) 笔者这里不过多描述每 ...
- PG统计信息和系统表
一.PG统计信息概述 pg的统计信息主要分为两种: 第一类统计信息是是负载指标"统计信息"(Monitoring stats),通过stat collector进程进行实时采集更新 ...
- postgresql索引使用情况及坏索引处理
1.postgresql中索引系统视图pg_stat_user_indexes TEST=# \d+ sys_stat_user_indexes View "SYS_CATALOG.sys_ ...
- PostgreSQL建立索引时,如何避免写数据锁定
先介绍一下Postgresql的建索引语法: CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ name ] ON table [ USING method ] ( ...
- mysql8.0.30主从配置
安装包下载地址: https://downloads.mysql.com/archives/community/ 1. 解压介质包: # tar xf mysql-8.0.30-linux-glibc ...
- 2021昆明B
容斥 + 矩形面积并 + 状压dp B-Blocks_第46届ICPC亚洲区域赛(昆明)(正式赛) (nowcoder.com) 题意 给出一个矩形A \((0,0),(W,H)\), 给出 \(n\ ...
- Servlet-随机生成验证码(初级版本)
Servlet之 验证码(初级) 需求: 使用Servlet向页面响应验证码,并且点击验证码或者"看不清楚,换一张"可以刷新验证码 需求分析: Servlet中需要完成的需求: 验 ...
- .NET版本发展史
.NET从始至今可以分为3个阶段,分别是.NET Framework阶段..NET Core阶段..NET阶段: .NET Framework终结于.NET Framework4.8版本,.NET C ...
- 使用a标签锚点实现顺滑效果
scroll-behavior:smooth;//使用该方法使用a标签锚点的时候会实现平滑 xxx.scrollIntoView({ behavior: "smooth" })
- Section 2.1: Falsy VSTruthy Value and == VS ===
Falsy VS Truthy Value and == VS === Falsy values: undefined, null, 0, '', NaN Truthy values: Not fal ...