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

 JS 代码基本配置

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

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

  首先在html中添加

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

  js代码

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

  给每列添加自定义属性

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

  给每列添加点击事件

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

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

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

  start    //  开始的记录序号

  draw    //  当前页面

  1. 1 "ajax": function (data, callback, settings) {
  2. 2 //封装请求参数
  3. 3 var param = {};
  4. 4 param.length = data.length;//页面显示记录条数,在页面显示每页显示多少项的时候
  5. 5 param.start = data.start;//开始的记录序号
  6. 6 param.draw = data.draw;//当前页码
  7. 7
  8. 8 //ajax请求数据
  9. 9 $.ajax({
  10. 10 type: "get",
  11. 11 url: "请求路径",
  12. 12 cache: false, //禁用缓存
  13. 13 data: param,
  14. 14 dataType: "json",
  15. 15 success: function (result) {
  16. 16 //封装返回数据
  17. 17 var returnData = {};
  18. 18 returnData.draw = result.data.draw;//这里直接自行返回了draw计数器,应该由后台返回
  19. 19 returnData.recordsTotal = result.data.recordsTotal;//返回数据全部记录
  20. 20 returnData.recordsFiltered = result.data.recordsFiltered;//后台不实现过滤功能,每次查询均视作全部结果
  21. 21 returnData.data = result.data.data;//返回的数据列表
  22. 22 //调用DataTables提供的callback方法,代表数据已封装完成并传回DataTables进行渲染
  23. 23 //此时的数据需确保正确无误,异常判断应在执行此回调前自行处理完毕
  24. 24 callback(returnData);
  25. 25 }
  26. 26 });
  27. 27 },

dataTables 插件学习整理的更多相关文章

  1. TweenMax学习整理--特有属性

    TweenMax学习整理--特有属性   构造函数:TweenMax(target:Object, duration:Number, vars:Object) target:Object -- 需要缓 ...

  2. js数组学习整理

    原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...

  3. [jQuery]jQuery DataTables插件自定义Ajax分页实现

    前言 昨天在博客园的博问上帮一位园友解决了一个问题,我觉得有必要记录一下,万一有人也遇上了呢. 问题描述 园友是做前端的,产品经理要求他使用jQuery DataTables插件显示一个列表,要实现分 ...

  4. HttpClient学习整理

    HttpClient简介HttpClient 功能介绍    1. 读取网页(HTTP/HTTPS)内容    2.使用POST方式提交数据(httpClient3)    3. 处理页面重定向    ...

  5. uexQQ插件学习心得

    uexQQ插件学习心得 uexQQ插件的作用:通过qq可以分享图文,音乐,应用到相应的qq空间.支持手机客户端分享和手机webQQ分享.下面我们就来看一看他的一些方法. 我们先说一下分享的步骤,这个步 ...

  6. emmet插件学习,练习中遇到一些问题

    emmet插件学习:帮助提高敲代码效率的插件 参考文献:Emmet(Zen coding)HTML代码使用技巧七则http://www.wzsky.net/html/Website/htmlcss/1 ...

  7. bootstrap插件学习

    转自http://v3.bootcss.com/javascript/ bootstrap javascript插件学习 模态框 打开模态框 <button type="button& ...

  8. Jquery插件学习

    前端开发也工作了一段时间,Jquery代码页写了很多,但是都是些的很零散的,不是很好用,网上看了很多人写的Jquery 很好用,而且到每个项目中都可以使用, 本人就感觉很好奇他们是怎么做到的呢,于是自 ...

  9. jquery.dataTables插件使用例子详解

    DataTables是一个jQuery的表格插件.这是一个高度灵活的工具,依据的基础逐步增强,这将增加先进的互动控制,支持任何HTML表格 效果图 代码 <!doctype html> & ...

随机推荐

  1. docker~不使用yml批量部署服务

    回到目录 有时,我们在进行持续集成环境有时,有时yml环境是没有的,它可能只提供了docker工具,而docker-compose这个大家伙可能不被提供,而这样我们如果希望自动化构建解决方案下所有的项 ...

  2. python默认编码设置

      打开python 的gui,输入 1 2 import sys sys.getdefaultencoding() 查询系统当前默认编码 默认情况下显示编码方式为ASCII 在python安装目录下 ...

  3. Python编程从入门到实践笔记——if语句

    Python编程从入门到实践笔记——if语句 #coding=utf-8 cars=['bwm','audi','toyota','subaru','maserati'] bicycles = [&q ...

  4. 💈 线程间互访助手类 (EN)

    Conmajia © 2012, 2018 Published on August 5th, 2012 Updated on February 2nd, 2019 Introduction While ...

  5. python -使用del语句删除对象引用

    使用del语句删除一些对象引用. 注意不是把内存地址删了,你只是删除了引用,它就变为了一个可回收的对象,内存会不定期回收. del语句的语法是: del var1[,var2[,var3[....,v ...

  6. [转]Blue Prism Architecture

    本文转自:https://mindmajix.com/blue-prism-architecture Introduction Automation technology is widely bloo ...

  7. java爬虫系列第一讲-爬虫入门

    1. 概述 java爬虫系列包含哪些内容? java爬虫框架webmgic入门 使用webmgic爬取 http://ady01.com 中的电影资源(动作电影列表页.电影下载地址等信息) 使用web ...

  8. 介绍Dynamics 365的OrgDBOrgSettings工具

    摘要: 微软动态CRM专家罗勇 ,回复320或者20190320可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 有时候会需要 ...

  9. Android 离线人脸识别 ArcFace 2.0 Demo开发分享

    环境要求     1.运行环境 armeabi-v7a     2.系统要求 Android 5.0 (API Level 21)及以上     3.开发环境 Android Studio   下载地 ...

  10. Spring AOP 整理笔记

    一.AOP概念 AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. 利用AOP可以对业务逻辑的各 ...