前端开发技术栈(插件篇):datatables

news2024/11/16 23:33:10
  • 一、Datatables介绍

        官网地址:https://datatables.net/

        DataTables中文网:http://datatables.club/

       1、Datatables是一款jquery表格插件。它是一个高度灵活的工具,可以将任何HTML表格添加高级的交互功能。

       2、分页,即时搜索和排序。

       3、几乎支持任何数据源:DOM,javascript,Ajax 和 服务器处理。

       4、支持不同主题 DataTables, jQuery UI, Bootstrap, Foundation。

       5、各式各样的扩展: Editor, TableTools, FixedColumns….

       6、丰富多样的option和强大的API。

       7、支持国际化。

       8、免费开源。

  • 二、开始使用Datatables

1、下载:

        http://datatables.net/releases/DataTables-1.10.12.zip

2、引入库

        只需要引入三个文件即可,jQuery库,一个DT的核心js文件和一个DT的css文件

        <link rel="stylesheet" href="css/jquery.dataTables.css"/>

        <script src="js/jquery.js"></script>

        <script src="js/jquery.dataTables.js"></script>

3、添加HTML 代码
 

<table id="table_id" class="display">
<thead>
<tr>
<th>Column 1</th>
<th>Column 2</th>
</tr>
</thead>
<tbody>
<tr>
<td>Row 1 Data 1</td>
<td>Row 1 Data 2</td>
</tr>
<tr>
<td>Row 2 Data 1</td>
<td>Row 2 Data 2</td>
</tr>
</tbody>
</table>

4、初始化Datatables

$(document).ready( function () {
        $('#table_id').DataTable();
});

匿名函数方式初始化:

$(document).ready(function(){
        $("#table_id").DataTable();
});
  • 三、Datatables国际化

        DataTables 默认的字符是英文,也可以翻译成其他语言或定制的字符。

        Datatables中所使用的语言选项是通过 language 来配置的。 这是一个对象字符串,通过一个参数来描述Datatables的每个部分,语言选项的配置与 其他配置 方式完全相同,作为初始化设置的一部分;

1、初始化方式:

    language: {

        sLengthMenu: “显示 _MENU_ 项结果”,
        sSearch:“搜索:”  // 或 search:"搜索:“

    }

2、引入文件方式:

       <script src="localisation/International.js"></script>     

       将语言信息写入文件,并在初始化部分引入。

3、把语言定义在文件中,使用language.url选项来初始化:

language:{
    //url:"./localisation/zh_CN.txt"
    url:"./localisation/Chinese.json"
}

* 根据需要对Datatables中语言选项进行设置。 任何不指定的选项,将使用Datatables中默认值

Chinese.json示例:

{
"sProcessing": "处理中...",
"sLengthMenu": "显示 _MENU_ 项结果",
"sZeroRecords": "没有匹配结果",
"sInfo": "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项",
"sInfoEmpty": "显示第 0 至 0 项结果,共 0 项",
"sInfoFiltered": "(由 _MAX_ 项结果过滤)",
"sInfoPostFix": "",
"sSearch": "搜索:",
"sUrl": "",
"sEmptyTable": "表中数据为空",
"sLoadingRecords": "载入中...",
"sInfoThousands": ",",
"oPaginate": {
    "sFirst": "首页",
    "sPrevious": "上页",
    "sNext": "下页",
    "sLast": "末页"
},
"oAria": {
    "sSortAscending": ": 以升序排列此列",
    "sSortDescending": ": 以降序排列此列"
}
}
  • 四、Datatables属性

4.1、隐藏功能框

1、searching:false       禁用搜索

2、info:false                隐藏显示从几到几(共几条)

3、ordering: false     禁用排序功能   自定义序号无效

4、pageLength:1         控制每页显示的条数  数字表示条数

5、bPaginate:false      禁用上页下页翻页  以及指定显示的条数

6、pagingType:"full_numbers“        显示首尾页以及上下页

4.2、保存状态

       Datatables设置 stateSave选项后,可以保存最后一次分页信息、排序信息,当页面刷新,或者重新进入这个页面,恢复上次的状态。

       这个状态的保存用了html5的本地储存和session储存,这样更加有效率。如果你的数据是异步获取的,你可以使用 stateSaveCallback和 stateLoadCallback选项. 

需要注意的是,这个特性不支持ie6、ie7 

默认情况下,这个状态会保存2小时,如果你希望设置的时间更长,通过设置参数 stateDuration来初始化表格 ,这个参数值也可以控制是本地储存(0~更大)还是session储存(-1) 

Datatables设置 stateSave选项初始化后,实现的状态保存

$('#table_id').DataTable( {

stateSave: true

} );

4.3、隐藏列

1、有些数据不希望显示在屏幕上,或者需要什么条件才会显示,被隐藏的列依然是表格的一部分,也可以搜索和访问被隐藏的列的相关内容。

     

例:Age和Sex两列不显示(隐藏的列不会生成dom,他存在于DT的内部数据中),并且不能被搜索到。

 "columnDefs": [

      {

        "targets": [ 2 ],

        "visible": false,

        "searchable": false

      },

      {

        "targets": [ 3 ],

        “visible”: false,

        ”Searchable”:false

      }

    ]

属性

“targets”: [ 2 ]    跟数组下标一样,第一列从0开始

“visible”: false    false表示隐藏,true表示显示(默认)

”Searchable”:false    false表示不能被搜索到,true表示可以被搜索到(默认)

4.4、columns – ajax数据源

1、Datatables最简单的ajax数据源的用法

$("#table_id2").dataTable({
    "ajax":"data/arrays.txt"
});

之所以能不写columns是因为dt默认可以处理数组格式的数据,按照数组的顺序0,1,2……对应第一列,第二列

2、通过使用 columns.dataDT 选项用于告诉Datatables找到每一列的数据源对象中对应的属性。

$(“#table_id”).dataTable({
    “ajax”:“data/objects.txt”,
    columns:[
    {“data”:“name”},
    {“data”:“position”},
    {“data”:“start_date”},
    {“data”:“office”},
    {“data”:“extn”}
    ]});

3、Datatables也可直接接受一个js数组来初始化表格(引入JS文件:<script src="data/data.js"></script>

$('#table_id3').dataTable( {
    "data": dataSet,
    "columns": [
        { "title": "Engine"},
        { "title": "Browser" },
        { "title": "Platform" },
        { "title": "Version" },
        { "title": "Grade"}
    ]});

示例:

数据模型 array:["Tiger Nixon", "System Architect", "2011/04/25", "Edinburgh", "5421"]

数据模型 objects:{ "name": "Tiger Nixon", "position": "System Architect", "start_date": "2011/04/25", "office": "Edinburgh", "extn": "5421" }

4.5、columnDefs - 添加列默认值

添加列默认值

作用:为空的格子赋默认值,防止弹出:DataTables Waring。

用法:作为初始化的一个属性

columnDefs:[
    {
        //defaultContent:“”,//赋一个空字符串的值
        defaultContent:“-”,
        targets:“_all”

    }

]

_all:表示指定所有列       0:表示第一列 (列下标从0开始)      -1:表示倒数第一列,负数

4.6、添加滚动条与分页

通过设置paging选项,禁止表格分页(默认是打开的)

1、禁用分页,超过100像素就显示滚动条

paging: false
scrollY: 100    垂直滚动条

pagingType:   “full_numbers“   打开分页

scrollX: true    水平滚动条

4.7、默认排序

       在datatables初始化时可以使用order选项指定列怎么排序,order可以接受多个二维数组数据,数组第一个位置表示第几列,第二个位置表示标示asc(升序)或desc(降序)。

例:与数组的下标一样,第一列从0开始,这里表格初始化时,第2列升序,第3列降序

order:[[1,"asc"],[2,"desc"]]

4.8、列渲染

       在datatables初始化时可以使用order选项指定列怎么排序,order可以接受多个二维数组数据,数组第一个位置表示第几列,第二个位置表示标示asc(升序)或desc(降序)。

例:把Age列隐藏,通过columns.render方法把Age的值拼接到Name列

columnDefs:[{

render:function(data,type,row){

return data + '('+ row[2]+')';

},

targets:1

},

{

visible:false,

targets:[2]

}]

4.9、服务器获取数据源

        Datatables有许多方法来获取你的数据,如果你的数据量比较大,这个时候你需要使用服务器模式来处理你的数据。 在服务器模式下,所有的分页,搜索,排序等操作,Datatables都会交给服务器去处理。所以每次绘制Datatables, 都会请求一次服务器获取需要的数据。

        通过配置serverSideDT 这个属性来打开Datatables的服务器模式,下面的例子展示了Datatables打开服务器模式。

1、ajax请求服务器中的数据

方式一:函数名称方式

ajax: {

url:“{{ url_for(‘server_data’) }}“
}

方式二:路由地址方式

ajax: {

url:”/server_data
}

2、绑定数据源
      columns: [
                { data: “engine”},
                { data: "browser"},
                { data: "time" },
                { data: "name" },
                { data: "number"}
         ]

数据模型:{"engine":"Tiger Nixon", "browser":"System Architect","time":"2011/04/25", "name":"Edinburgh", "number":"5421"}

4.10、添加新列与数据源的绑定

1、ajax请求服务器中的数据

ajax: {

url:"{{ url_for('server_data') }}"
}

2、绑定数据源
    columns: [

        { data:null },//不绑定数据源

        { data: "engine"},//绑定数据源
       { data: "browser"},

        { data: "time" },

        { data: "name" },

        { data: "number"}

]

3、添加新列与默认值,解决警告问题

columnDefs:[
{
              targets:6,
              data:"操作",
              render:function (data,type,row) {
                  return "<a title='编辑'  class='btn btn-xs btn-info changetype' href='#' >编辑</a>&nbsp;&nbsp;"+
                                  "<a title='删除' class='btn btn-xs btn-danger' href='#'>删除</a>";
              }
      },
      {
       defaultContent:"",
       targets:"_all"
      }

],

order:[[5,"asc"]]

上面所有的属性均为DT实例化中的内容

DT 实例化:var dts = $(‘#table_id’).DataTable({});

还可以通过order指定列进行排序:

order 这个配置项的作用是,设置默认的排序列为第6列,升序。

为什么?因为 DT 默认会设置第一列升序排列,既然已经是行号了那就没必要了,所以,还可以指定别的列进行排序。

4、给未绑定数据源列添加索引

自定义序号
dts.on("order.dt search.dt",function(){
        dts.column(0,{
            search:"applied",
            order:"applied"
        }).nodes().each(function (cell,i) {
            cell.innerHTML = i + 1;
        });
    }).draw();

on 为 jQuery 里监听事件的方法,给元素绑定监听事件,这里监听了 order.dt 、search.dt 两个事件,意思是当排序和搜索后,重新生成行号。

dts.column(0,{selector}).nodes() 这个的作用是获取第一列的 DOM 元素,接着用 each 方法遍历,把行号设置进去。这里 {selector} 为 DT 的高级应用。

draw 最后一个重绘方法,生成序号后,重新绘制。DT 的每个操作,包括排序、过滤、翻页还是自己使用API操作这些操作或者是设置了数据都要再调用 draw 方法才行。

  • 五、案例:借助Bootstrap美化

使用方法:只需要引入Datatables已经写好的css样式和js即可。

在<table>后面添加:

table table-hover   鼠标悬停的行的背景变为灰色

table table-condensed    减小行间距

向<tr>添加:.success、.error、.warning、.info、 .active、 .danger

样式1

样式2

  • 六、总结

1、columns和columndefs的区别

     1.1、两个参数可以同时使用,但是columns定义的优先级最高,columns先执行,columnDefs后执行。

     1.2、columnDefs比columns多一个属性 columnDefs.targetsDT,有了这个属性就可以做很多columns做不到的事情。

     1.3、columns:设置特定列的初始化属性,可以定义数组设置多列,数组长度必须等于表格的数量,只想使用默认值可以设为“NULL”,数组每个元素只能设置单列的属性。

     1.4、columnDefs:与columns非常相似,该数组可以针对特定的列,多列或者所有列定义。数组可以任意长度。

通过targets参数设置一个列或者多列,该属性定义可以如下:

0或正整数 - 从左边的列索引计数 

负整数 - 列索引从右边计数

一个字符串 - 类名称将被匹配上的th为列 

“_all”- 所有的列(即指定一个默认值)

示例代码仓库:https://gitee.com/SteveRocket/practice_fronted/tree/master/frontend_plugs_libs/datatables

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/139324.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Bootstrap】可复用的组件

目录 一、字体图标 二、下拉菜单 1. 步骤 2. 对齐 3. 分割线 4. 禁用的菜单项 三、按钮组 1. 按钮组 2. 按钮工具栏 3. 尺寸 4. 嵌套 5. 垂直排列 四、输入框组 1. 输入框组 2. 尺寸 3. 作为额外元素的按钮 4. 作为额外元素的按钮式下拉菜单 一、字体图标 组件…

55、MySOL数据库

目录 一、MySQL安装和配置 二、数据库 三、表 四、数据库的C [create] R [read] U [update] D [delete] 语句 1、insert语句 2、update语句 3、delete语句 4、select语句 五、Mysql常用数据类型&#xff08;列类型&#xff09;&#xff1a;​编辑 六、函数 *合计 / 统计…

kettle - 清洗 mongodb 数据案例

文章目录前言kettle - 清洗 mongodb 数据案例一、需求二、kettle开发1、新建mongodb数据查询2、配置kettleTest集合与清洗后kettleTestClear集合字段映射3、根据_id进行排序4、使用java脚本将日期格式化5、进行字段选择6、将delete字段进行值映射7、mongo输出8、最后加一个写日…

详解哨兵之间是如何通信的

基于 pub/sub 机制的哨兵集群组成 哨兵实例之间可以相互发现&#xff0c;要归功于 Redis 提供的 pub/sub 机制&#xff0c;也就是发布 / 订阅机制。 哨兵只要和主库建立起了连接&#xff0c;就可以在主库上发布消息了&#xff0c;比如说发布它自己的连接信息&#xff08;IP 和…

PDF如何转换成PPT?教你们几个简单方法

我们在工作经常用PDF文件进行传输&#xff0c;因为PDF体积小&#xff0c;传输速度很快&#xff0c;还不会不同设备上出现不兼容的问题&#xff0c;可以很好的保持文件的排版&#xff0c;不过我们有时候需要进行文件的展示&#xff0c;所以需要将PDF文件转换为PPT文件&#xff0…

2023河南/北京/重庆/南京DAMA-CDGA/CDGP数据治理工程师认证报名

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…

论文阅读——Recognizing Emotion Cause in Conversations

文章目录摘要引言相关工作任务定义构造RECCON数据集情绪原因的类型实验任务1&#xff1a;Causal Span Extraction模型任务2&#xff1a;Causal Emotion Entailment模型面临的挑战摘要 识别文本中情绪背后的原因是NLP中一个未被探索的研究领域。这个领域的发展具有着改善情感模…

Docker基础1-3

Docker基础1-3 时间:2023-01-02 https://www.bilibili.com/video/BV1gr4y1U7CY/ xmind文档&#xff1a;https://www.aliyundrive.com/s/6iaQt9zLDVm 一、Docker简介 1、Docker解决了什么问题 Docker打破了过去「程序即应用」的观念。透过镜像(images)将作业系统核心除外&am…

LeetCode:15. 三数之和

15. 三数之和1&#xff09;题目2&#xff09;思路3&#xff09;代码4&#xff09;结果1&#xff09;题目 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] …

【Nginx】核心配置文件结构

文章目录Nginx核心配置文件结构全局块user指令work process指令其他指令events块events指令配置实例http块定义MIME-Type自定义服务日志其他配置指令server块和location块Nginx服务器基础配置实例Nginx核心配置文件结构 从前面的内容学习中&#xff0c;我们知道Nginx的核心配置…

给力!低代码开发平台广州流辰信息科技助您增辉创价值!

低代码平台开发公司流辰信息深耕行业多年&#xff0c;一直以市场为导向&#xff0c;凭借敏锐的市场洞察力砥砺前行、拼搏进取&#xff0c;提升研发创新能力&#xff0c;广州流辰信息科技与各新老客户朋友风雨同舟&#xff0c;携手共创宏伟新蓝图&#xff01; 一、熔铸前沿科技 …

kettle的安装以及注意(迭代中....)

1、下载 kettle的官网下载地址&#xff1a;Pentaho from Hitachi Vantara - Browse Files at SourceForge.net 如果需要下载其他版本&#xff1a; 直接点击对应的版本Name&#xff08;8.0以下的实在Data Integration文件夹里面&#xff09;进去&#xff0c;再选择client-too…

【C++】代码调试的学习笔记

1. IO输出调试&#xff1a;输出重定向 在《第八期-C基础与深度解析》课程中&#xff0c;老师使用了“输出重定向”的语句来查看cout和cerr的结果&#xff1a; ./HelloWorld >txt1 2>txt2 代码含义&#xff1a;将程序HelloWorld的标准输出stdout重定向至文件txt1&#xf…

百趣代谢组学分享:从SWATH到MRM:一种新型高覆盖度靶向代谢组学技术

百趣代谢组学文献分享&#xff0c;SWATHtoMRM: Development of High-Coverage Targeted Metabolomics Method Using SWATH Technology for Biomarker Discovery&#xff0c;是由中国科学院生物与化学交叉研究中心&#xff0c;Dr. Zheng-Jiang Zhu课题组发表在AC上的一篇技术型文…

verilog学习笔记- 3)SignalTap II 软件的使用

目录 SignalTap II简介&#xff1a; SignalTap II使用&#xff1a; SignalTap II简介&#xff1a; SignalTap II 全称 SignalTap II Logic Analyzer&#xff0c;是第二代系统级调试工具&#xff0c;可以捕获和显示实时信号&#xff0c;是 一款功能强大且极具实用性的 FPGA 片…

IO模型详解

什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll跟IO模型有什么关系?有几种经典IO模型呢?BIO、NIO、AIO到底有什么区别的? 什么是IO呢? IO,英文全称是Input/Output,翻译过来就是输入/输出。平时我们听得挺多,就是什么磁盘IO,网络I…

LCHub:2023年低代码开发平台市场规模将增长25%至100亿美元

随着企业希望变得更加敏捷、业务流程更加自动化,并创建新的Web和移动应用来满足消费者的需求,自动化开发工具正在成为关键因素,尤其在IT人才持续短缺的情况下。 根据调研机构最近进行的一项研究,面对持续的IT技能短缺,低代码和无代码平台等能够实现流程自动化并使员工能…

便捷生活,你我共享 | 美格智能Cat.1模组为共享经济赋能

近年来&#xff0c;共享经济在国内的兴起&#xff0c;主要基于两大优势&#xff0c;一是资源共享&#xff0c;为人们的生活带来便捷&#xff1b;二是绿色低碳&#xff0c;符合社会的发展潮流。作为近年来经济发展的新业态&#xff0c;共享经济的快速普及&#xff0c;以及带来的…

SpringMVC的请求参数传递

1&#xff0c;简单参数类型 单个参数 发送&#xff1a; http://localhost/commonParam?nameitcast接收&#xff1a; Controller public class UserController {RequestMapping("/commonParam")ResponseBodypublic String commonParam(String name){System.out.pr…