jquery datatable[表格处理]
最近在公司实习发现一个额功能强大的表格解决方案,了解了一下,先总结如下:
1.官网:http://www.datatables.net/
2.需要特别注意:被dataTable处理的table对象,必须有thead与tbody,而且,结构要规整(数据不一定要完整),这样才能正确处理。
3.一些基本属性:
"bPaginate": true, //翻页功能
"bLengthChange": true, //改变每页显示数据数量
"bFilter": true, //过滤功能
"bSort": false, //排序功能
"bInfo": true,//页脚信息
"bAutoWidth": true//自动宽度
4.可设置属性
|
属性名称 |
取值范围 |
解释 |
|
bAutoWidth |
true or false, default true |
是否自动计算表格各列宽度 |
|
bDeferRender |
true or false, default false |
用于用于衬着的一个参数 |
|
bFilter |
true or false, default true |
开关,是否启用客户端过滤功能 |
|
bInfo |
true or false, default true |
开关,是否显示表格的一些信息 |
|
bJQueryUI |
true or false, default false |
是否使用jquery ui themeroller的风格(不是很懂) |
|
bLengthChange |
true or false, default true |
开关,是否显示一个每页长度的选择条(需要分页器支持) |
|
bPaginate |
true or false, default true |
开关,是否显示(使用)分页器 |
|
bProcessing |
true or false, defualt false |
开关,以指定当正在处理数据的时候,是否显示“正在处理”这个提示信息 |
|
bScrollInfinite |
true or false, default false |
开关,以指定是否无限滚动(与sScrollY配合使用),在大数据量的时候很有用。当这个标志为true的时候,分页器就默认关闭 |
|
bSort |
true or false, default true |
开关,是否让各列具有按列排序功能 |
|
bSortClasses |
true or false, default true |
开关,指定当当前列在排序时,是否增加classes 'sorting_1', 'sorting_2' and 'sorting_3',打开后,在处理大数据时,性能有所损失 |
|
bStateSave |
true or false, default false |
开关,是否打开客户端状态记录功能。这个数据是记录在cookies中的,打开了这个记录后,即使刷新一次页面,或重新打开浏览器,之前的状态都是保存下来的 |
|
sScrollX |
'disabled' or '100%' 类似的字符串 |
是否开启水平滚动,以及指定滚动区域大小 |
|
sScrollY |
'disabled' or '200px' 类似的字符串 |
是否开启垂直滚动,以及指定滚动区域大小 |
|
aaSorting |
array array[int,string], 如[], [[0,'asc'], [0,'desc']] |
指定按多列数据排序的依据 |
|
aaSortingFixed |
同上 |
同上。唯一不同点是不能被用户的自定义配置冲突 |
|
aLengthMenu |
default [10, 25, 50, 100],可以为一维数组,也可为二维数组,比如:[[10, 25, 50, -1], [10, 25, 50, "All"]] |
这个为选择每页的条目数,当使用一个二维数组时,二维层面只能有两个元素,第一个为显示每页条目数的选项,第二个是关于这些选项的解释 |
|
aoSearchCols |
default null, 类似:[null, {"sSearch": "My filter"}, null,{"sSearch": "^[0-9]", "bEscapeRegex": false}] |
给每个列单独定义其初始化搜索列表特性(这一块还没搞懂) |
|
asStripClasses |
default ['odd', 'even'], 比如['strip1', 'strip2', 'strip3'] |
指定要被应用到各行的class风格,会自动循环 |
|
bDestroy |
true or false, default false |
用于当要在同一个元素上执行新的dataTable绑定时,将之前的那个数据对象清除掉,换以新的对象设置 |
|
bRetrieve |
true or false, default false |
用于指明当执行dataTable绑定时,是否返回DataTable对象 |
|
bScrollCollapse |
true or false, default false |
指定适当的时候缩起滚动视图 |
|
iCookieDuration |
整数,默认7200,单位为秒 |
指定用于存储客户端信息到cookie中的时间长度,超过这个时间后,自动过期 |
|
iDeferLoading |
整数,默认为null |
延迟加载,它的参数为要加载条目的数目,通常与bServerSide,sAjaxSource等配合使用 |
|
iDisplayLength |
整数,默认为10 |
用于指定一屏显示的条数,需开启分页器 |
|
iDisplayStart |
整数,默认为0 |
用于指定从哪一条数据开始显示到表格中去 |
|
iScrollLoadGap |
整数,默认为100 |
用于指定当DataTable设置为滚动时,最多可以一屏显示多少条数据 |
|
oSearch |
默认{ "sSearch": "", "bRegex": false, "bSmart": true } |
又是初始时指定搜索参数相关的,有点复杂,没搞懂目前 |
|
sAjaxDataProp |
字符串,default 'aaData' |
指定当从服务端获取表格数据时,数据项使用的名字 |
|
sAjaxSource |
URL字符串,default null |
指定要从哪个URL获取数据(一般跳入一个controller返回数据) |
|
sCookiePrefix |
字符串,default 'SpryMedia_DataTables_' |
当打开状态存储特性后,用于指定存储在cookies中的字符串的前缀名字 |
|
sDom |
default lfrtip (when bJQueryUI is false) or <"H"lfr>t<"F"ip> (when bJQueryUI is true) |
这是用于定义DataTable布局的一个强大的属性,另开专门文档来补充说明吧 |
|
sPaginationType |
'full_numbers' or 'two_button', default 'two_button' |
用于指定分页器风格 |
5.常用方法
a)数据排序
$(document).ready(function() {
$('#example').dataTable( {
"aaSorting": [
[ 4, “desc” ]
]
} );
} );从第0列开始,以第4列倒序排列
b)隐藏某些列
$(document).ready(function() {
$('#example').dataTable( {
"aoColumnDefs": [
{ "bSearchable": false, "bVisible": false, "aTargets": [ 2 ] },
{ "bVisible": false, "aTargets": [ 3 ] }
] } );
} );
c)状态保存,使用了翻页或者改变了每页显示数据数量,会保存在cookie中,下回访问时会显示上一次关闭页面时的内容。
$(document).ready(function() {
$('#example').dataTable( {
"bStateSave": true
} );
} );
d)显示数字的翻页样式
$(document).ready(function() {
$('#example').dataTable( {
"sPaginationType": "full_numbers"
} );
} );
e)水平限制宽度
$(document).ready(function() {
$('#example').dataTable( {
"sScrollX": "100%",
"sScrollXInner": "110%",
"bScrollCollapse": true
} );
} );
f)改变语言
$(document).ready(function() {
$('#example').dataTable( {
"oLanguage": {
"sLengthMenu": "每页显示 _MENU_ 条记录",
"sZeroRecords": "抱歉, 没有找到",
"sInfo": "从 _START_ 到 _END_ /共 _TOTAL_ 条数据",
"sInfoEmpty": "没有数据",
"sInfoFiltered": "(从 _MAX_ 条数据中检索)",
"oPaginate": {
"sFirst": "首页",
"sPrevious": "前一页",
"sNext": "后一页",
"sLast": "尾页"
},
"sZeroRecords": "没有检索到数据",
"sProcessing": "<img src='./loading.gif' />"
}
} );
g)排序控制
$(document).ready(function() {
$('#example').dataTable( {
"aoColumns": [
null,
{ "asSorting": [ “asc” ] },
{ "asSorting": [ “desc”, “asc”, “asc” ] },
{ "asSorting": [ ] },
{ "asSorting": [ ] }
]
} );
} );
h)使用ajax源
$(document).ready(function() {
$('#example').dataTable( {
"bProcessing": true,
"sAjaxSource": './arrays.txt'
} );
} );
j)使用ajax,在服务器端整理数据
$(document).ready(function() {
$('#example').dataTable( {
"bProcessing": true,
"bServerSide": true,
"sPaginationType": "full_numbers","sAjaxSource": "./server_processing.php",
/*如果加上下面这段内容,则使用post方式传递数据
"fnServerData": function ( sSource, aoData, fnCallback ) {
$.ajax( {
"dataType": 'json',
"type": "POST",
"url": sSource,
"data": aoData,
"success": fnCallback
} );
}*/
"oLanguage": {
"sUrl": "cn.txt"
},
"aoColumns": [
{ "sName": "platform" },
{ "sName": "version" },
{ "sName": "engine" },
{ "sName": "browser" },
{ "sName": "grade" }
]//$_GET[‘sColumns’]将接收到aoColumns传递数据
} );
} );
k)为每行加载id和class
服务器端返回数据的格式:
{
"DT_RowId": "row_8",
"DT_RowClass": "gradeA",
"0": "Gecko",
"1": "Firefox 1.5",
"2": "Win 98+ / OSX.2+",
"3": "1.8",
"4": "A"
},
6.实例
html页面:
<div class="portlet-body">
<table id="userDataTable" class="table table-hover table-bordered table-striped dt-responsive" width="100%">
<thead>
<tr>
<th style="text-align: center;font-size: 14px;">账号</th>
<th style="text-align: center;font-size: 14px;">姓名</th>
<th style="text-align: center;font-size: 14px;">角色</th>
<th style="text-align: center;font-size: 14px;">更新时间</th>
<th style="text-align: center;font-size: 14px;width:15%">操作</th>
</tr>
</thead>
<tbody style="text-align: center;font-size: 15px;"></tbody>
</table>
</div>
js代码:
userDataTable = $('#userDataTable').DataTable({"bLengthChange":false,"bServerSide": true,"bFilter": false,"bProcessing": true,"bSort": true,"sAjaxSource": CONSTANT_PATH+"/user/queryUsers",
"fnServerParams" : function(aDataSet) {aDataSet.push({"name" : "userRole","value" : $("#roles").val()},{"name" : "userNo","value":$("#userNo1").val()},{"name" : "userName","value" : $("#userName").val() },{"name" : "createStartDt","value" : $("#createStartDt").val()},{"name" : "createEndDt","value" : $("#createEndDt").val()});},
"fbServerData":function(sSource,aDataSet){$.ajax({"dataType":"json","type":"GET","url":sSource,"data":aDataSet});},
"aoColumns":[{"mDataProp":"userNo"},{"mDataProp":"userName"},{"mDataProp":"ext1"},{"mDataProp":"createDate"},{"mDataProp":"locked"}],
"aoColumnDefs": [
{orderable:false,targets:[1,2,3,4]},
{"aTargets":[0],"mRender":function(data,type,full){return (full.locked)?data+" <span class='label label-danger'><i class='icon-lock'></i></span>":data;}},
{"aTargets": [4],"mRender":function (data, type, full) {
var lockAction = (data)?"<i class='icon-lock-open'></i> 解封用户":"<i class='icon-lock'></i> 禁封用户";
var operation="<div class='btn-group'><a class='btn btn-default btn-sm' id='query' data-id='"+full.userId +"'data-json='"+JSON.stringify(full)+"'><i class='fa fa-file-text-o'></i> 用户详情</a><a href='#' type='button' class='btn btn-default btn-sm dropdown-toggle' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'><span class='caret'></span></a><ul class='dropdown-menu'>";
operation+="<li><a id='reset' data-value='"+full.userNo+"' data-id='"+full.userId +"'><i class='icon-puzzle'></i> 重置密码</a></li>";
operation+="<li><a id='alterRole' data-value='"+full.userNo+"' data-id='"+full.userId +"'><i class='icon-users'></i> 变更角色</a></li>";
operation+="<li><a id='lock' data-value='"+data+"' data-type='"+full.userName+"' data-id='"+full.userId +"'>"+lockAction+"</a></li>";
return operation+"<li><a id='dltRole' data-name='"+full.userName+"' data-id='"+full.userId +"'><i class='fa fa-remove'></i> 删除用户</a></li></ul></div>";
}
},{"aTargets": [1,2,3],"mRender":function (data, type, full) {if(data!=null&&data!="")return data;else return "<font color='font-red-mint'>尚未设置</font>";}}],
"oLanguage":{"sUrl": CONSTANT_PATH+"/resources/assets/plugins/dataTables/txt/page.txt"}
});
其中CONSTANT_PATH+"/resources/assets/plugins/dataTables/txt/page.txt页面中:
{"sProcessing": "处理中...",
"sLengthMenu": "每页显示 _MENU_ 条记录",
"sZeroRecords": "没有匹配的记录",
"sInfo": "从 _START_ 到 _END_ /共_TOTAL_条数据",
"sInfoEmpty": "没有数据",
"sInfoFiltered": "",
"sZeroRecords": "没有数据",
"oPaginate": {
"sFirst": "首页",
"sPrevious": "上一页",
"sNext": "下一页",
"sLast": "尾页"}
}
最终结果

jquery datatable[表格处理]的更多相关文章
- jQuery Datatable 表格插件
Datatable 总体来说很好用,可以实现即时搜索和排序.但是只能用于数据量较少的情况下,如果数据量超过1K建议还是用表格加翻页,不然会很慢. datatable 中文网 http://datat ...
- jQuery dataTable 表格插件的后台分页与界面展示
效果: html部分: {include file="Public:inner_header" /} <nav class="breadcrumb"> ...
- JQuery实现表格的增加行和删除行
利用JQuery实现datatables插件的增加和删除行操作 在学习过程中遇到了这个利用JQuery对表格行的增加和删除,特记录下来以供初学者参考. 下面是主要的代码: <meta http- ...
- 分享在MVC3.0中使用jQuery DataTable 插件
前不久在网络上看见一个很不错的jQuery的DataTable表格插件.后来发现在MVC中使用该插件的文章并不多.本文将介绍在MVC3.0如何使用该插件.在介绍该插件之前先简单介绍一下,推荐该插件的原 ...
- jQuery DataTable 删除数据后重新加载
问题描述: 利用jQuery Datatable和artTemplate组合来做的表格.但是当删除数据时,需要重新加载table里的数据.但是问题是datatable并没有直接的重新渲染,反而给数据累 ...
- Jquery.Datatable 控件后端分页实例 (后台使用ashx、aspx-webmethod)
本实例引用Datatable版本号: 1.10.16 一.传到aspx后台(webmethod) 1.添加js.css引用: <link href="/Scripts/ThirdLib ...
- JQuery Datatable用法
原文出处:http://sgyyz.blog.51cto.com/5069360/1408251 目标: 使用jQuery Datatable构造数据列表,并且增加或者隐藏相应的列,已达到数据显示要求 ...
- jQuery Datatable 转载
jQuery Datatable 实用简单实例 时间 2014-05-08 10:44:18 51CTO推荐博文 原文 http://sgyyz.blog.51cto.com/5069360/14 ...
- JQuery DataTable的配置项及事件
当我们需要在加载或者显示表格的时候,改变jquery datatable 的数据,或增加一些html标签处理. 可以通过Jquery DataTable的回调函数处理. 实例代码: if (oTabl ...
随机推荐
- Clean Code第二章<命名>
1.命名要有意义 错误写法 正确写法 2.某些构造函数可以提供有意义的静态方法去实现
- HDU 5534 Partial Tree (完全背包变形)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5534 题意: 给你度为1 ~ n - 1节点的权值,让你构造一棵树,使其权值和最大. 思路: 一棵树上 ...
- drop,truncate与delete的区别
注意:这里说的delete是指不带where子句的delete语句 相同点 truncate和不带where子句的delete, 以及drop都会删除表内的数据 不同点: 1. truncate和 d ...
- 解决CSS各种IE各种兼容问题(Google解决方案)
google的 ie7 – js中是一个JavaScript库(解决IE与W3C标准的冲突的JS库),使微软的Internet Explorer的行为像一个Web标准兼容的浏览器,支持更多的W3C标准 ...
- DevExpress控件使用经验总结
转自:http://www.cnblogs.com/wuhuacong/archive/2011/08/31/2161002.html
- VC++ 中滑动条(slider控件)使用 [转+补充]
滑动控件slider是Windows中最常用的控件之一.一般而言它是由一个滑动条,一个滑块和可选的刻度组成,用户可以通过移动滑块在相应的控件中显示对应的值.通常,在滑动控件附近一定有标签控件或编辑框控 ...
- UIWebView 获取当前的javascript上下文,并js,oc互调
OC调用UIWebView 中的js,网上例子很多,最常用的是UIWebView自带的一个方法: - (NSString *)stringByEvaluatingJavaScriptFromStrin ...
- ZTE AD3812 3G模块在linux 2.6.34 内核的开发板上的支持方法
先说段废话,话说在linux 2.6.34 下,好多比较新的3G网卡及3G模块都没有很好的支持.如果想支持的这些3G网卡/3G模块呢,基本上有两种方式: 1.使用该3G模块的 linux 下的驱动,交 ...
- C# DateTime 日期加1天 减一天 加一月 减一月 等方法
//今天 DateTime.Now.Date.ToShortDateString(); //昨天,就是今天的日期减一 DateTime.Now.AddDays(-).ToShortDateString ...
- Android 中View的绘制机制源代码分析 三
到眼下为止,measure过程已经解说完了,今天開始我们就来学习layout过程.只是在学习layout过程之前.大家有没有发现我换了编辑器,哈哈.最终下定决心从Html编辑器切换为markdown编 ...