• dataTables 插件学习整理


     在项目中使用了dataTables 插件,学习整理一下。

      dataTables 的官方中文网站 http://www.datatables.club

      引入文件:

      所有的都要引入 jq文件

      1. dataTables 的样式

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

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

      2. bootstrap 风格的dataTables

      <link rel="stylesheet" href="bootstrap.css">

      <link rel="stylesheet" href="dataTables.bootstrap.css">

      <script src="bootstrap.js"> 

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

      <script src="dataTable.bootstrap.js">

      HTML 代码

     1 <table id="example" width="100%" class="table table-striped table-bordered">
     2                                 <thead>
     3                                 <tr>
     4                                     <th>编码</th>
     5                                     <th>职位</th>
     6                                     <th>姓名</th>
     7                                     <th>状态</th>
     8                                     <th>项目</th>
     9                                     <th>机构</th>
    10                                     <th>操作</th>
    11                                 </tr>
    12                                 </thead>
    13                             </table>

     JS 代码基本配置

      1 var lang = {
      2     "sProcessing": "处理中...",
      3     "sLengthMenu": "每页 _MENU_ 项",
      4     "sZeroRecords": "没有匹配结果",
      5     "sInfo": "当前显示第 _START_ 至 _END_ 项,共 _TOTAL_ 项。",
      6     "sInfoEmpty": "当前显示第 0 至 0 项,共 0 项",
      7     "sInfoFiltered": "(由 _MAX_ 项结果过滤)",
      8     "sInfoPostFix": "",
      9     // "sSearch": "本地搜索:",
     10     "sUrl": "",
     11     "sEmptyTable": "暂无数据",
     12     "sLoadingRecords": "载入中...",
     13     "sInfoThousands": ",",
     14     "oPaginate": {
     15         "sFirst": "首页",
     16         "sPrevious": "上页",
     17         "sNext": "下页",
     18         "sLast": "末页",
     19         "sJump": "跳转"
     20     },
     21     "oAria": {
     22         "sSortAscending": ": 以升序排列此列",
     23         "sSortDescending": ": 以降序排列此列"
     24     }
     25 };
     26 
     27 $('#example').DataTable({
     28            "processing" : true, //DataTables载入数据时,是否显示进度条
     29            "serverSide": true,  //  开启服务端模式
     30             "language": lang, //提示信息
     31             "autoWidth": false, //自适应宽度,
     32             "sScrollY" : 450, //DataTables的高  
     33             "sScrollX" : 820, //DataTables的宽
     34             "columnDefs": [
     35                 {"targets": 0, "width": "10%"},  // 设置第一列的宽度
     36                 {"targets": 1, "width": "10%"},
     37                 {"targets": 2, "width": "10%"},
     38                 {"targets": 3, "width": "10%"},
     39                 {"targets": 4, "width": "20%"},
     40                 {"targets": 5, "width": "20%"},
     41                 {"targets": 6, "width": "20%"}
     42             ],
     43              "lengthMenu": [10, 20, 30],   // 显示每页显示的条数  
     44             "stripeClasses": ["odd", "even"],   // 为奇偶行添加样式
     45             "searching": true,       // 是否允许开启本地检索功能
     46             "bFilter": false,         // 去掉 搜索框
     47             "paging": true,            // 是否开启本地分页
     48             "lengthChange": true, //是否允许产品改变表格每页显示的记录数
     49             "info": true,             // 控制是否显示表格左下角的信息
     50             "bSort": false, // 禁止排序
     51             "deferRender": true,   // 延迟渲染
     52              "pageLength": 10,      // 每页显示的条数
     53                                     //跟数组下标一样,第一列从0开始,这里表格初始化时,
     54             "order": [2, 'asc'],   //asc升序   desc降序 // 下标为2,第三列 生序排列
     55             "aoColumnDefs": [{
     56                 "orderable": false,// 指定列不参与排序
     57                 "aTargets": [1,3,4,5,6] // 指定 下标为[1,3,4,5,6]的不排序 
     58             }],
     59             "initComplete": function () {  // 给每列添加下拉搜索
     60                 var api = this.api();
     61                 api.columns().indexes().flatten().each(function (i) {
     62                     if (i != 0 && i != 2 && i != 6) {  // 第1,3,7不添加,其余的添加
     63                         var column = api.column(i);
     64                         var select = $('<select><option value=""></option></select>')
     65                             .appendTo($(column.header())) // 显示在table中最上面在thead里面
     66                             .on('change', function () {
     67                                 var val = $.fn.dataTable.util.escapeRegex(
     68                                     $(this).val()
     69                                 );
     70                                 column
     71                                     .search(val ? val : '', true, false)
     72                                     .draw();
     73                             });
     74 
     75                         column.data().unique().sort().each(function (d, j) {
     76                             var text = $(d).html();  // 获取 span 里面的 text
     77                             var val = $(d).attr("value"); // 获取span 里面的自定义属性 value
     78                             if(text != null && text.trim() != "" && val != null && text.trim() != ""){
     79                                 select.append('<option value="' + val + '">' + text + '</option>')
     80                             }
     81 
     82                         });
     83                     }
     84 
     85                 });
     86             },
     87            "ajax": {  // ajax 请求数据
     88                 "url": "请求路径",
     89                 "type": "get"
     90             },
     91           "columns":[
     92            {data: name}(后台返回的字段名),    // 有几列就解析几次
     93            data: tell(后台返回的字段名), 
     94            ...
     95            // 还可以写
     96            //{
     97            //        "data": function (e) {
     98            //           return e.name;
     99            //      }
    100            //  },
    101 
    102 ]
    103     
    104     
    105 });                 

      给每一列添加下拉搜索的方法 (2)官方

      首先在html中添加

     1 <tfoot>
     2             <tr>
     3                 <th></th>
     4                 <th></th>
     5                 <th></th>
     6                 <th></th>
     7                 <th></th>
     8                 <th></th>
     9             </tr>
    10 </tfoot>

      js代码

     1 initComplete: function () {
     2             var api = this.api();
     3             api.columns().indexes().flatten().each( function ( i ) {
     4                 var column = api.column( i );
     5                 var select = $('<select><option value=""></option></select>') 
     6                     .appendTo( $(column.footer()).empty() ) // 给tfoot里面添加select
     7                     .on( 'change', function () {
     8                         var val = $.fn.dataTable.util.escapeRegex(
     9                             $(this).val()
    10                         );
    11                         column
    12                             .search( val ? '^'+val+'$' : '', true, false )
    13                             .draw();
    14                     } );
    15                 column.data().unique().sort().each( function ( d, j ) {
    16                     select.append( '<option value="'+d+'">'+d+'</option>' )
    17                 } );
    18             } );
    19         }

       给每列添加自定义属性

    1 // 在 "columns" 下面添加
    2  createdRow: function (row, data, index) {
    3      // 给每列添加 自定义属性 name 
    4      $(row).attr('name',data.name); 
    5   }

      给每列添加点击事件

      $('#example  tbody').on( 'click', 'tr', function () { }) ;

      自定义的分页 ,只给后台传指定的参数

      length   // 页面显示的条数,每页显示多少条、

      start    //  开始的记录序号

      draw    //  当前页面

     1 "ajax": function (data, callback, settings) {
     2                 //封装请求参数
     3                 var param = {};
     4                 param.length = data.length;//页面显示记录条数,在页面显示每页显示多少项的时候
     5                 param.start = data.start;//开始的记录序号
     6                 param.draw = data.draw;//当前页码
     7
     8                 //ajax请求数据
     9                 $.ajax({
    10                     type: "get",
    11                     url: "请求路径",
    12                     cache: false,  //禁用缓存
    13                     data: param,
    14                     dataType: "json",
    15                     success: function (result) {
    16                         //封装返回数据
    17                         var returnData = {};
    18                         returnData.draw = result.data.draw;//这里直接自行返回了draw计数器,应该由后台返回
    19                         returnData.recordsTotal = result.data.recordsTotal;//返回数据全部记录
    20                         returnData.recordsFiltered = result.data.recordsFiltered;//后台不实现过滤功能,每次查询均视作全部结果
    21                         returnData.data = result.data.data;//返回的数据列表
    22                         //调用DataTables提供的callback方法,代表数据已封装完成并传回DataTables进行渲染
    23                         //此时的数据需确保正确无误,异常判断应在执行此回调前自行处理完毕
    24                         callback(returnData);
    25                     }
    26                 });
    27             },
  • 相关阅读:
    25- 解决'python -m pip install --upgrade pip' 报错问题
    2018.4.28 基于java的聊天系统(带完善)
    2018.4.27 Java的Swing常用事件
    2018.4.26 Mac安装Redis5.0.3版本服务器
    2018.4.25 设计模式之策略者模式
    2018.4.24 设计模式之桥接模式
    2018.4.23 数据结构
    2018.4.22 深入理解Java的接口和抽象类
    2018.4.21 如何正确快速安装/卸载云服务器Centos7安装GUI图形化界面GNOME桌面环境
    2018.4.20 设计模式之组合模式
  • 原文地址:https://www.cnblogs.com/hellofangfang/p/10761254.html
Copyright © 2020-2023  润新知