工欲善其事,必先利其器

本系列文章介绍我在运维系统开发过程中用到的那些顺手的前端插件,前边两篇分别介绍了Duallistbox插件Select2插件的使用,这一篇开始Databases的征服之旅

Databases是一款基于JQuery的表格插件,主要用来优化table,支持表格分页、搜索、排序、显示条数、异步加载等众多好用的功能

项目地址:https://datatables.net/

基本使用

需要用到的JS和CSS文件位于项目代码下的media目录中,需要将这个目录中的对应文件放入你的项目里,这一步不赘述

  1. 引入CSS/JS文件,由于Datatables是基于Jquery的,所以要先引入Jquery,这里我们都直接引入CDN的地址
<!-- 加载 Jquery -->
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <!-- 加载 Datatables -->
<link href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css" rel="stylesheet" />
<script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
  1. 初始化Datatables
<table id="myTable" class="display" style="width:100%">
<thead>
<tr>
<th>Name</th>
<th>Position</th>
<th>Office</th>
<th>Age</th>
<th>Start date</th>
<th>Salary</th>
</tr>
</thead>
<tbody>
<tr>
<td>Ops Coffee</td>
<td>System Architect</td>
<td>Edinburgh</td>
<td>18</td>
<td>2011/04/25</td>
<td>$320,800</td>
</tr>
<!-- 中间省略一些tr数据 -->
<tr>
<td>Donna Snider</td>
<td>Customer Support</td>
<td>New York</td>
<td>27</td>
<td>2011/01/25</td>
<td>$112,000</td>
</tr>
</tbody>
<tfoot>
<tr>
<th>Name</th>
<th>Position</th>
<th>Office</th>
<th>Age</th>
<th>Start date</th>
<th>Salary</th>
</tr>
</tfoot>
</table> $(document).ready( function () {
$('#myTable').DataTable();
});
  1. 完成以上两步可以看到页面效果如下

功能开启/关闭

默认界面下除了原始的table外,还为table额外增加了搜索、列排序、分页及信息显示这些内容,如果不需要其中一个或多个可以通过以下设置隐藏

$('#myTable').DataTable({
"paging": false,
"ordering": false,
"info": false,
"searching": false,
});

paging: 控制分页是否开启,默认开启,开启后会显示表格左上角的每页行数选择和右下角的页码跳转

ordering: 控制是否进行排序,默认开启,且默认会对第一列数据进行排序

info: 控制是否显示表格左下角的信息,默认开启

searching: 控制是否显示表格右上角的搜索,默认开启

排序配置

单列排序

可以通过order来设置初始排序的列以及排序方向

"order": [[ 3, "desc" ]],

列号默认从0开始算起,这里的3实际上对应的是第4列,这点要注意,以下所有用到列号的地方都是从0开始

注意:开启stateSave之后会导致columnDefs失效,两个参数尽量不要同时设置

多列排序

当然也可以在order里边配置同时按多列排序

"order": [[ 3, "desc" ], [ 0, "desc" ]],

如上配置的意思是先按照3列进行排序,如果3列相同,则再按照0列进行排序

隐藏列

可以通过columnDefs来设置列属性

"columnDefs": [
{
"targets": [ 2 ],
"visible": false,
"searchable": false
},
{
"targets": [ 3 ],
"visible": false,
}
]

targets: 指定列

visible: 是否可显示

searchable: 是否可搜索,当仅设置visablefalse,但searchable不设置时这一列仍然可以被搜索

注意:开启stateSave之后会导致columnDefs失效,两个参数尽量不要同时设置

语言配置

默认提示语都是英文,可以通过language来设置为中文

"language": {
"decimal": "",
"emptyTable": "表中数据为空",
"info": "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项",
"infoEmpty": "显示第 0 至 0 项结果,共 0 项",
"infoFiltered": "(由 _MAX_ 项结果过滤)",
"InfoPostFix": "",
"thousands": ",",
"lengthMenu": "显示 _MENU_ 项结果",
"loadingRecords": "载入中...",
"processing": "处理中...",
"search": "搜索:",
"zeroRecords": "没有匹配结果",
"Paginate": {
"sFirst": "首页",
"sPrevious": "上一页",
"sNext": "下一页",
"sLast": "尾页"
},
"Aria": {
"sSortAscending": ": 以升序排列此列",
"sSortDescending": ": 以降序排列此列"
}
}

状态保持

可以通过stateSave来设置是否保持状态,stateSave会调用HTML5的localStoragesessionStorageAPIs将页面状态数据保存在浏览器本地,当你刷新页面时会自动加载这些状态信息,这些状态可以是你的排序信息、当前页码以及已输入的搜索数据等

"stateSave": true,

分页类型

可以通过pagingType来设置分页类型

"pagingType": "simple_numbers",

simple_numbers: 类型会显示上一页、下一页按钮和页码,这也是默认的分页类型

其他几种分页类型如下:

numbers: 仅显示页码

simple: 仅显示上一页、下一页按钮

full: 仅显示首页、尾页、上一页和下一页按钮

full_numbers: 显示首页、尾页、上一页、下一页按钮和页码

first_last_numbers: 显示首页、尾页按钮和页码

滚动配置

当table的宽、高超过页面设置大小时,可以通过以下配置来添加滚动条

"scrollX": "true",
"scrollY": "200px",
"scrollCollapse": true,

scrollX: 允许水平滚动条

scrollY: 设置垂直body的高度,当超过这个这个高度时出现垂直滚动条

scrollCollapse: 设置当数据占用高度小于scrollY设置的高度时自动收缩body高度

完整Demo

为了方便大家学习,我写了个完整的demo,你可以在线查看效果或下载代码应用到自己的项目中

在线Demo地址:https://demo.ops-coffee.cn/datatables/

Github源码地址:https://github.com/ops-coffee/demo/tree/master/datatables

其他说明

由于Datatables的内容较多,且使用广泛,更高级的用法会在下篇文章中说明,例如数据异步加载,添加编辑、删除按钮,调整页面功能显示等


相关文章推荐阅读:

前端插件之Datatables使用--上篇的更多相关文章

  1. 前端插件之Datatables使用--下篇

    工欲善其事,必先利其器 本系列文章介绍我在运维系统开发过程中用到的那些顺手的前端插件,上一篇文章介绍了Datatables插件的基本使用,这一篇文章作为上一篇的延续,会介绍Databases的一些高级 ...

  2. 前端插件@user

    分享一个 @user 前端插件   开源地址:https://github.com/yuezhongxin/Mention.js 插件效果:类似于微博或 github 中 @user 列表效果. 这是 ...

  3. Django之前端插件定制之表头

    什么是插件? 插件只是辅助,是开发过程中的一个阶段.一般项目一期会用各种插件,迅速将功能.界面搭出来,二期时就改成自己的代码了.大点的公司都有自己的js库,自己开发类似jquery的库. 那接下来就写 ...

  4. 前端插件之Bootstrap Dual Listbox使用

    工欲善其事,必先利其器 对于很多非专业前端开发来说写页面是非常痛苦的,借助框架或插件往往能够达到事半功倍的效果,本系列文章会介绍我在运维系统开发过程中用到的那些顺手的前端插件,如果你是想写XX管理系统 ...

  5. 前端插件之Select2使用

    工欲善其事,必先利其器 本系列文章介绍我在运维系统开发过程中用到的那些顺手的前端插件,上一篇文章介绍了bootstrap-duallistbox这个插件的使用,这一篇开始Select2的征服之旅 Se ...

  6. VSCODE开发VUE.JS前端插件

    VUE前端插件.转载自:https://www.cnblogs.com/karthuslorin/p/8577224.html vscode是微软开发的的一款代码编辑器,就如官网上说的一样,vscod ...

  7. VScode前端插件推荐

    工欲善其事,必先利其器,安利一波前端插件. Chinese (Simplified) Language Pack for Visual Studio CodeVScode汉化插件 Beautify代码 ...

  8. 前端开发:一个开源、简单易用的jQuery表格插件(DataTables)

    DataTables是一个基于jQuery库的开源(MIT协议)表格插件,支持添加.排序.分页.搜索.过滤等功能,使用简单.广受欢迎,能够与主流前端UI整合(如bootstrap.jQuery UI等 ...

  9. sublime text3 前端插件介绍

    Emmet插件 Emmet插件可以说是使用Sublime Text进行前端开发必不可少的插件 它让编写HTML代码变得极其简单高效 基本用法:输入标签简写形式,然后按Tab键 关于Emmet的更多介绍 ...

随机推荐

  1. Codeforces Gym101246H:``North-East''(LIS+思维)

    http://codeforces.com/gym/101246/problem/H 题意:在二维平面上有n个点,从最左下角的点出发,每次走只能走在当前的点的右上角的点(xj > xi, yj ...

  2. c#中bin,obj,properties文件夹的作用

    Bin 目录用来存放编译的结果,bin是二进制binrary的英文缩写,因为最初C编译的程序文件都是二进制文件,它有Debug和Release两个版本,分别对应的文件夹为bin/Debug和bin/R ...

  3. [1045] PDOException in Connection.php line 295

    tp5实现登录功能时报错 在使用tp5框架实现登录功能的时候,点击login出现了 [1045] PDOException in Connection.php line 295 这个问题, 报错是 S ...

  4. 【素数的判定-从暴力到高效】-C++

    今天我们来谈一谈素数的判定. 对于每一个OIer来说,在漫长的练习过程中,素数不可能不在我们的眼中出现,那么判定素数也是每一个OIer应该掌握的操作,那么我们今天来分享几种从暴力到高效的判定方法. 1 ...

  5. dbo是默认用户也是架构

    dbo是默认用户也是架构 dbo作为架构是为了更好的与2000兼容, 在2000中DataBaseName.dbo.TableName解释为:数据库名.用户名.表名, 在2005中DataBaseNa ...

  6. 2017-10271weblogic漏洞exp测试及补丁测试

    靶机:weblogic12.1.3.0 战斗机:kali 导弹:burpsuite 1.首先开启kali某端口监听 2.向靶机发送exp 3.查看kali监听 打码保平安~~ 4.打上补丁 5.验证补 ...

  7. 自实现input上传指定文件到服务器

    遇到问题,解决问题,记录问题,成长就是一步一步走出来的. 一.添加 input 标签 我的工作中遇到了,需要上传pdf文件到服务器的需求,而且只能上传pdf文件,accept指定了 pdf 类型. & ...

  8. Scala数据结构

    Scala数据结构 主要的集合特质 Scala同时支持可变集合和不可变集合,优先采用不可变集合.集合主要分为三大类:序列(List),集(set),映射(map).所有的集合都扩展自Iterable特 ...

  9. ssm框架下的文件上传和文件下载

    最近在做一个ssm的项目,遇到了添加附件和下载的功能,在网上查了很多资料,发现很多都不好用,经过摸索,发现了一套简便的方法,和大家分享一下. 1.在自己已经构建好的maven  web项目中 pom. ...

  10. 更简洁的log4j日志输出

    参考博客:https://blog.csdn.net/guoquanyou/article/details/5689652 只输出到文本,不输出到控制台 log4j.rootLogger=debug, ...