DataTables 控件使用和心得 (1) - 入门
什么是DataTables
- DataTables是一个基于HTML/CSS/JavaScript的前端列表组件.
- 基于JQuery
- 开源并且免费(除特殊支持服务)
- 主要特色: 高性能,响应式,功能完整
- 主网站为http://www.datatables.net/
DataTables的优势
完整全面的功能
其开发团队已经注入了大量心血,功能非常完整,已经可以适应绝大多数前端列表的开发需求.
丰富的API和支持
具有相当丰富的参数(Options)和函数(API)对控件进行定义和控制,实现各种灵活的配置和功能.
本身虽然为开源免费软件,但支持力度很高,更新频繁;主网站内容丰富,详尽.另外也提供付费的支持服务.
优秀的质量,稳定性和性能
声称有2900+套单位测试代码的支持;其主JS库压缩以后只有26K;另外其核心Render机制,是仅仅Render列表的显示部分内容(10000条数据200页,仅仅Render1页50条数据),为稳定高效提供了基础.
丰富的功能
目前比较有价值的功能包括
- 支持Ajax数据获取,提供真分页实现方案.
- 提供多种常见主题支持DataTables, jQuery UI, Bootstrap, Foundation
- 完全支持响应式设计
- 完美支持排序,翻页,自定义行列显隐,样式和内容.
- 自动控制列宽.
- 灵活控制表格的滚动条设定.
- 多语言支持
- 另外通过扩展功能还可以实现
- 列的拖动
- 单列过滤
- 行或列的固定
- 表格内编辑
- 少量类Excel功能(如键盘选择,拖动赋值)
- Excel, PDF导出功能
DataTables的安装
第一步: 下载并引入DataTables的主JS文件: jquery.dataTables.js或者jquery.dataTables.min.js
也可以使用CDN:
官方CDN: http://cdn.datatables.net/1.10.6/js/jquery.dataTables.min.js
Bootstrap CDN: http://cdn.bootcss.com/datatables/1.10.6/js/jquery.dataTables.min.js
另外如果希望引入CSS,可以下载官方提供的几种常见的CSS样式:
http://www.datatables.net/manual/styling/
第二步: 对页面的指定列表元素调用DataTables组件
$(document).ready(function() {
$('#example').dataTable();
} );
- #example对应了id=example的一个table元素.
- 一般来说dataTable函数会以一个对象为参数,这个参数对象就是DataTables的Options,这些Options用于控制列表控件的各种特性.(关于Options的具体内容我们以后讨论,也可以参阅官方文档)
当然,在没有任何Options的情况下,DataTables是给出了一个标准的界面,如下图:

左上是页内条数控制(默认为1页10个),右上是简单搜索功能,中间是列表主体,左下是分页信息,右下是分页控制.这些控件都可以通过Options进行显隐, 控制和自定义.
DataTables常见的3种数据方式
HTML数据
所有数据在指定的Table元素中以TR,TD方式已经存在,这个时候,调用默认的dataTable函数就可以实现该组件的默认功能. 调用方式与标准模式类似.
$(document).ready(function() {
$('#example').dataTable();
} );
JS对象数据
指定的Table元素中不需要有任何数据.dataTable函数通过一个JS数组对象把数据加载到控件中去.写法如下:
$('#example').dataTable( {
"data": dataSet
} );
注意,dataset是一个数组对象,一般的格式是: [obj1,ojb2,ojb3….] , 每一个obj对象对应每一行的数据, 这个对象的属性会被依次绑定到每一个列中.
远程数据
通过Ajax从远程获取Json数据,并绑定到控件中去,写法如下:
$('#example').dataTable( {
"ajax": url
} );
url为远程请求的地址.
这里需要特别注意的是,由于dataTables内部实现机制,其返回的json并不是一个简单的数组对象,而是一个包含一个data属性的对象,具体格式参考如下:
{ “data” : [obj1,obj2,obj3……] }
DataTables常见问题
对于后面2中数据加载模式,我们可以想到,原Table元素中的<tbody>中是不需要定义任何内容的.但<thead>可以有2个选择,通过HTML定义,dataTable函数绑定; 或者完全由dataTable绑定和生成.如果是完全由dataTable控件生成,其写法如下:
$('#example').dataTable( {
"data": dataSet,
"columns": [
{ "title": "Engine"},
{ "title": "Browser"},
{ "title": "Platform"},
{ "title": "Version", "class": "center"},
{ "title": "Grade", "class": "center"}
]
} );
当然就算是用HTML定义<thead>,但数据中属性的顺序和<th>的顺序不同,或者有些属性并不需要显示出来,该怎么办呢, 依然可以通过columns配置属性来进行定义.
$('#example').dataTable( {
"data": dataSet,
"columns": [
{ "data": "Engine"},
{ "data": "Browser"},
{ "data": "Platform"},
{ "data": "Version"}
]
} );
另外在使用标准dataTable函数以后,以上3种数据方式加载的列表,都可以完美的实现,简单搜索,分页和排序功能(真翻页的实现要稍微复杂一点,这个后续文章再进行描述).
这篇文章仅仅是入门级的,让大家初步了解这个组件的基本面貌,一些比较详尽的内容我会在随后的博文中讨论,如果大家有兴趣了解这个控件,或者已经在使用这个控件,希望和我交流的,还请不吝赐教.
DataTables 控件使用和心得 (1) - 入门的更多相关文章
- DataTables 控件使用和心得 (2) - 参数Options
什么是DataTables参数(Options) 上篇我们说了,DataTables控件的加载函数dataTable()一般都有一个对象参数,这个对象参数就是整个DataTables控件的参数(Opt ...
- ASP.NET AJAX入门系列(4):使用UpdatePanel控件(一)
UpdatePanel可以用来创建丰富的局部更新Web应用程序,它是ASP.NET 2.0 AJAX Extensions中很重要的一个控件,其强大之处在于不用编写任何客户端脚本,只要在一个页面上添加 ...
- IOS入门之创建视图和控件绑定
学习IOS几天了,跟着教程做了两个小应用了,现在先来总结一下.今天就是创建视图和绑带到代码了.其实就是常见的MVC模式实现. 使用的Xcode版本是8.2. 在Xcode创建项目之后,默认就会创建一个 ...
- duilib进阶教程 -- 各种控件的响应 (10)
到上一个教程为止,界面显示的代码就都介绍完啦,现在开始介绍控件的响应,其实在<2013 duilib入门简明教程 -- 事件处理和消息响应 (17)>里已经列出了duilib自己定义的所有 ...
- WPF Step By Step 控件介绍
WPF Step By Step 控件介绍 回顾 上一篇,我们主要讨论了WPF的几个重点的基本知识的介绍,本篇,我们将会简单的介绍几个基本控件的简单用法,本文会举几个项目中的具体的例子,结合这些 例子 ...
- web前端开发控件学习笔记之jqgrid+ztree+echarts
版权声明:本文为博主原创文章,转载请注明出处. 作为web前端初学者,今天要记录的是三个控件的使用心得,分别是表格控件jqgrid,树形控件ztree,图表控件echarts.下边分别进行描述. ...
- QTP 自动货测试桌面程序-笔记(添加控件仓库并关联到action)
录制或编写脚本前先添加行为对应的控件仓库: 心得:多个测试action使用的同一个窗体的仓库单独放于一个仓库中,可以在多个action中添加关联使用 将同一个窗体的控件只放于一个仓库中,减少使用时的名 ...
- WP8.1学习系列(第十一章)——中心控件Hub开发指南
在本文中 先决条件 什么是中心控件? 添加中心控件 将分区添加到中心 添加交互式分区头用于导航 将展示磁贴添加到中心 使用窄应用中的垂直中心 借助中心使用语义式缩放视图 摘要和后续步骤 重要的 API ...
- 浅谈Winform控件开发(一):使用GDI+美化基础窗口
写在前面: 本系列随笔将作为我对于winform控件开发的心得总结,方便对一些读者在GDI+.winform等技术方面进行一个入门级的讲解,抛砖引玉. 别问为什么不用WPF,为什么不用QT.问就是懒, ...
随机推荐
- 如何使cookie全站都生效?
一个页面设置的cookie, 默认在其同级目录下,及子目录下可以读取. 如果想让cookie整站有效,可以在根目录下setcookie 也可以用第4个参数,来指定cookie生效路径 setcooki ...
- javascript设计模式(单体模式)
主要内容: js中最基本.应用最广的模式就是单体模式,实现原理是将代码组织为一个逻辑单元,这个逻辑单元中的代码可以通过单一的变更进行访问,确保对象只存在一份实例. 单体模式的特点: 在网页中使用全局变 ...
- Codeigniter 在Active Record中限制批量更新数目
今天手头电商项目有个需求是:将订单中的优惠券自动发放给买家,所以要只更新优惠券表中的某几行数据,查了手册和网络都没有解决办法. 一开始用循环和遍历来做都是错的,因为update语句一下就更新掉所有符合 ...
- BZOJ4350: 括号序列再战猪猪侠
Description 括号序列与猪猪侠又大战了起来. 众所周知,括号序列是一个只有(和)组成的序列,我们称一个括号 序列S合法,当且仅当: 1.( )是一个合法的括号序列. 2.若A是合法的括号序列 ...
- JavaScript-事件坐标
事件坐标: 1.参照屏幕左上角e.screenX,e.screenY 2.参照文档显示区左上角:e.clientX||e.x , e.clientY||e.y 3.参照所在父元素的左上角:e.offs ...
- JavaScript-BOM-history:保存当前窗口打开后成功访问过的url历史记录栈
history:保存当前窗口打开后成功访问过的url历史记录栈history.go(n):前进n步前进一步:history.go(1);后退一步:history.go(-1);刷新:history.g ...
- 如何定制Activity的标题栏
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.main); //自定义标题栏 mW ...
- Spring绑定表单数据
Spring提供了一些jsp页面常用的form标签,很大程度上提高了我们开发的速度,不用再一个个的标签去绑定属性,而且后台接收数据也很简单,可以直接接收object对象作为属性.官方form标签介绍的 ...
- typename
typename关键字是C++在标准化过程中被引入的,目的在于向编译器说明template内的某个标识符是个类型. 如:template <typename T> class MyClas ...
- 神经网络hopfield的学习
Hopfield神经网络使用说明. 该神经网络有两个特点: 1,输出值只有0,1 2,Hopfield没有输入(input) 这里解释一下第二个特点,什么叫没有输入?因为在使用Hopfield网络的时 ...