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

目录

一、Datatables介绍

二、开始使用Datatables

三、Datatables国际化

四、Datatables属性

4.1、隐藏功能框

4.2、保存状态

4.3、隐藏列

4.4、columns – ajax数据源

4.5、columnDefs - 添加列默认值

4.6、添加滚动条与分页

4.7、默认排序

4.8、列渲染

4.9、服务器获取数据源

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

五、案例:借助Bootstrap美化

六、总结

1、columns和columndefs的区别:


注意:后续技术分享,第一时间更新,以及更多更及时的技术资讯和学习技术资料,将在公众号CTO Plus发布,请关注公众号:CTO Plus

  • 一、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


更多资料 · 微信公众号搜索【CTO Plus】关注后,获取更多,我们一起学习交流。

关于公众号的描述访问如下链接


关于Articulate“做一个知识和技术的搬运工。做一个终身学习的爱好者。做一个有深度和广度的技术圈。”一直以来都想把专业领域的技https://mp.weixin.qq.com/s/0yqGBPbOI6QxHqK17WxU8Q

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,关于 Datatables 和 Bootstrap Table 的使用,我给你提供一些基本的使用方法。 首先,你需要在前端页面中引入 Datatables 或 Bootstrap Table 的库文件和样式文件。可以在官网上下载并引入,也可以使用 CDN 引入。以 Datatables 为例,你可以在页面头部加入以下代码: ```html <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.25/css/jquery.dataTables.css"> <script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.25/js/jquery.dataTables.js"></script> ``` 接下来,你需要在前端页面中使用 Datatables 或 Bootstrap Table 来显示查询结果。以 Datatables 为例,你可以在 Ajax 请求成功后,使用以下代码来显示查询结果: ```javascript $(document).ready(function() { $('#example').DataTable({ data: response, // 后台返回的数据 columns: [ { data: 'column1' }, { data: 'column2' }, // ... ], paging: true, // 开启分页 pageLength: 10, // 每页显示的数据条数 lengthChange: false, // 禁止用户改变每页显示的数据条数 searching: false, // 禁止搜索 ordering: false // 禁止排序 }); }); ``` 其中,`#example` 是你在页面中用来显示表格的 DOM 元素的 ID,`response` 是后台返回的数据,`columns` 是你要显示的列的信息,`paging` 开启分页,`pageLength` 每页显示的数据条数,`lengthChange` 禁止用户改变每页显示的数据条数,`searching` 禁止搜索,`ordering` 禁止排序。 如果你想使用 Bootstrap Table,也可以在页面头部引入相应的库文件和样式文件,然后使用以下代码来显示查询结果: ```javascript $(document).ready(function() { $('#table').bootstrapTable({ data: response, // 后台返回的数据 columns: [ { field: 'column1', title: '列1' }, { field: 'column2', title: '列2' }, // ... ], pagination: true, // 开启分页 pageSize: 10, // 每页显示的数据条数 pageList: [10, 20, 30], // 可以选择的每页显示的数据条数 search: false, // 禁止搜索 sortable: false // 禁止排序 }); }); ``` 其中,`#table` 是你在页面中用来显示表格的 DOM 元素的 ID,`response` 是后台返回的数据,`columns` 是你要显示的列的信息,`pagination` 开启分页,`pageSize` 每页显示的数据条数,`pageList` 可以选择的每页显示的数据条数,`search` 禁止搜索,`sortable` 禁止排序。 希望这些代码可以帮到你,如果还有其他问题,可以继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SteveRocket

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值