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

1、支持分页:前台分页和后台分页

前台分页:后台一次把数据传过来,交给前端渲染。缺点:初次渲染时间长;优点:渲染完成后,搜索和排序速度很快

后台分页:前端把每页显示的条数、查询的页数、搜索的内容、排序列等信息传给后端,后端收到这些信息后,去数据库里查询指定页的信息,并统计出总共条数等信息,而后传给前端。缺点:每次排序、搜索、翻页都要去后台查库,耗时;优点:初次渲染快

共同点:随着数据量的增大,二者的查询时间都会变成。但是前台分页,需要网络传输大量的后台信息到前台,网络传输时间长,前端渲染压力大;后台分页每次只传输固定量的数据,网络耗时少,但是查库次数多。总得来看,对于数据量递增的情况,还是选用后台分页

2、其他功能见官网:举例、手册、插件、接口、论坛、博客等,一应俱全。看着样例,比葫芦画瓢总会的

中文官网:http://datatables.club/example/ 里面有大量的信息

英文官网:https://datatables.net/examples/server_side/post.html

3、1.10+版本前后,有些参数名字有调整,但是具有向下兼容性

4、后台分页的例子:https://datatables.net/examples/server_side/

JS代码

  1. $(document).ready(function() {
  2. $('#example').DataTable( {
  3. "processing": true, //翻页或者搜索的时候,前端是否给出“正在搜索”等提示信息
  4. "serverSide": true, // true表示使用后台分页
  5. "ajax": {
  6. "url": "scripts/post.php", // 异步传输的后端接口url
  7. "type": "POST" // 请求方式
  8. },
  9. "columns": [
  10. { "data": "first_name" },
  11. { "data": "last_name" },
  12. { "data": "position" },
  13. { "data": "office" },
  14. { "data": "start_date" },
  15. { "data": "salary" }
  16. ]
  17. } );
  18. } );

html代码:添加一个table标签,表头和表尾信息,必须有表头信息<thead>; <tbody></tbody> 可以不用,dataTables.js可以动态加载

  1. <table id="example" class="display" style="width:100%">
  2. <thead>
  3. <tr>
  4. <th>First name</th>
  5. <th>Last name</th>
  6. <th>Position</th>
  7. <th>Office</th>
  8. <th>Start date</th>
  9. <th>Salary</th>
  10. </tr>
  11. </thead>
  12. <tfoot>
  13. <tr>
  14. <th>First name</th>
  15. <th>Last name</th>
  16. <th>Position</th>
  17. <th>Office</th>
  18. <th>Start date</th>
  19. <th>Salary</th>
  20. </tr>
  21. </tfoot>
  22. </table>

ajax调用后端接口,后端接口返回信息的格式

  1. {
  2. "draw": 1, //这个自己不要写,自己写会有问题,系统会默认附带这个参数,而起每次请求,值会自动加一;官方解释这个参数的目的是基于安全角度
  3. "recordsTotal": 57, //总条数、总行数
  4. "recordsFiltered": 57, //过滤出来的总行数、条数
  5. //下面是前端展示的数据内容
    "data": [
  6. {
  7. "first_name": "Airi",
  8. "last_name": "Satou",
  9. "position": "Accountant",
  10. "office": "Tokyo",
  11. "start_date": "28th Nov 08",
  12. "salary": "$162,700"
  13. },
  14. {
  15. "first_name": "Angelica",
  16. "last_name": "Ramos",
  17. "position": "Chief Executive Officer (CEO)",
  18. "office": "London",
  19. "start_date": "9th Oct 09",
  20. "salary": "$1,200,000"
  21. }]
  22. }

下面是数据表的初始化设置:控制前端界面展示情况

  1. $(function () {
  2. $('#test-interface-table').dataTable(
  3. {
  4. "ajax": {
  5. "url": "/a/b",
  6. "type": "POST"
  7. },
  8. "processing": true,
  9. "serverSide": true,
  10. "bPaginate" : true,//分页工具条显示
  11. "bFilter" : true, //搜索栏
  12. "bSort" : false, //是否支持排序功能
  13. "order": [[3, "desc"]],//默认使用第几列排序
    //中文化界面显示
  14. "language": {
  15. "lengthMenu": "每页显示 _MENU_条数据",
  16. "sSearch": "搜索: ", //搜索框label
  17. "sSearchPlaceholder":"区域、项目名称、场景名字、执行人", //搜索框里的提示信息placeholder
  18. {#info: "当前是_PAGE_页,总共_PAGES_ 页,显示第_START_ 到第 _END_ ,筛选之后得到 _TOTAL_ 条,初始_MAX_ 条 ",//左下角的信息显示,大写的词为关键字。#}
  19. "info": "第_PAGE_/_PAGES_页, 显示第_START_到第_END_, 搜索到_TOTAL_/_MAX_条",
  20. "infoFiltered":"", //过滤时的显示信息
  21. "sProcessing": "正在加载数据,请稍等", //翻页、搜索时的前端提示信息
  22. "zeroRecords": "抱歉,没有数据", //无数据时的前端信息
  23.  
  24. paginate: {//分页的样式内容。
  25. previous: "上一页",
  26. next: "下一页",
  27. first: "第一页",
  28. last: "最后"
  29. }
  30. }
  31.  
  32. }
  33. );
  34. });

5、dataTable还可以解释bootstrap定制css样式

6、option ajax data 根据参数查询表格数据

dataTables本身是可以把一些参数从前端传给后端的,初次之外,你可以增加从前端传给后端的参数

7、修改搜索框的触发事件:默认是只要键盘弹起(keyup),就会开始搜索,比如你想搜索‘ab’,当你键盘输入完a再输入b时,会先搜索a,然后搜索ab。要么就把ab粘贴进去,就只会搜索ab,不会搜索a了。

但是我们可以根据下面文章的信息修改搜索触发事件为:回车

http://blog.csdn.net/u012088516/article/details/52423248

8、最后附一个前端搜索的后端执行的python代码:https://www.cnblogs.com/rgcLOVEyaya/articles/RGC_LOVE_YAYA_350days.html

  1. 使用sqlalchemy进行多表联合查询,对于搜索内容search_content进行数据库搜索,并对结果根据时间排序,然后根据页码和页面大小筛选
  1. from sqlalchemy import desc, or_
  1. search_result = s.query(Table1, Table2, Table3, Table4) \
  2. .filter(Table1.delete == False) \
  3. .filter(Table1.exec_Table4_id == Table4.Table4_id) \
  4. .filter(Table1.scene_id == Table3.id) \
  5. .filter(Table1.scene_id == OnlinePerfRelation.scene_id) \
  6. .filter(Table2.project_id == OnlinePerfRelation.project_id) \
  7. .filter(or_(Table1.scene_zone.like('%'+search_content+'%'),
  8. Table2.project_name.like('%' + search_content + '%'),
  9. Table3.scene_name.like('%' + search_content + '%'),
  10. # Table1.create_time.like('%'+search_content+'%'),
  11. Table4.realname.like('%'+search_content+'%'))).order_by(desc(Table1.create_time)).limit(page_size).offset(page_start).all()

参考:

1、http://blog.csdn.net/huaishuming/article/details/52211259

2、http://blog.csdn.net/shya_/article/details/55510480

3、http://blog.csdn.net/tomcat_2014/article/details/50177645

4、http://blog.csdn.net/KokJuis/article/details/53925783

5、https://github.com/ssy341/datatables-cn

6、http://blog.163.com/huajin_226/blog/static/1773512302014812256921/

7、http://www.datatables.club/manual/daily/2016/04/21/option-ajax-data.html

datatable使用介绍的更多相关文章

  1. C# DataTable的詳細使用方法

    在项目中经经常使用到DataTable,假设DataTable使用得当,不仅能使程序简洁有用,并且可以提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 一.DataTabl ...

  2. C# DataTable详细用法

    通过经常使用的项目中的DataTable,假设DataTable使用得当,不仅能使程序简洁有用,并且可以提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 一.DataTab ...

  3. 免费高效实用的.NET操作Excel组件NPOI(.NET组件介绍之六)

    很多的软件项目几乎都包含着对文档的操作,前面已经介绍过两款操作文档的组件,现在介绍一款文档操作的组件NPOI. NPOI可以生成没有安装在您的服务器上的Microsoft Office套件的Excel ...

  4. datatable和list的转换

    在开发中,把查询结果以DataTable返回很方便,但是在检索数据时又很麻烦,没有list<T>检索方便.但是数据以ILIST形式返回,就为我们在.NET中使用传统的数据绑定造成了不便.下 ...

  5. .Net环境下的缓存技术介绍 (转)

    .Net环境下的缓存技术介绍 (转) 摘要:介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页) 1         概念 ...

  6. 再谈使用Emit把Datatable转换为对象集合(List<T>)

    一.前因和存在的问题 前面我写了一篇<使用Emit把Datatable转换为对象集合(List<T>)>的博文,其实起源于我自己编写的一个orm工具(见前面几篇博文有介绍),里 ...

  7. Excel 导入到Datatable 中,再使用常规方法写入数据库

    首先呢?要看你的电脑的office版本,我的是office 2013 .为了使用oledb程序,需要安装一个引擎.名字为AccessDatabaseEngine.exe.这里不过多介绍了哦.它的数据库 ...

  8. 从零开始编写自己的C#框架(6)——SubSonic3.0插件介绍(附源码)

    前面几章主要是概念性的东西为主,向初学者们介绍项目开始前的一些知识与内容,从本章开始将会进入实操阶段,希望跟着本系统学习的朋友认真按说明做好每一步操作(对于代码最好是直接照着文档内容在你的IDE中打一 ...

  9. 使用NPOI读取Excel到DataTable

    一.NPOI介绍: 使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写.NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office ...

随机推荐

  1. 初识WEBGL

    WEBGL (全写Web Graphics Library)是一种3D绘图协议,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一 ...

  2. EmployeeMapper.xml例子,学习佟刚老师的myBatis课程,记录下的EmployeeMapper.xml,注释详细

    <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-/ ...

  3. ios字体简单设定

    UILabel *lable = [[UILabel alloc] init]; label.font = [];

  4. Node.js 创建server服务器

    var http=require('http'); //引入http模块 var server=http.createServer(function(req,res){  //创建一个server r ...

  5. 「 HDOJ P2227 」 Find the nondecreasing subsequences

    # 题目大意 就是找不下降子序列的个数. # 解题思路 一开始想着先离散化,然后再做个 $dp$,发现用 $dp$ 的话时间复杂度是 $\text{O}(n^2)$ 的,稳稳超时. 这里说说 $dp$ ...

  6. 10. InnoDB表空间加密

    10. InnoDB表空间加密 InnoDB支持存储在单独表空间中的表的数据加密 .此功能为物理表空间数据文件提供静态加密. 详细信息见官方文档

  7. Linux的硬件时间、校正Linux系统时间及系统时间调用流程

    第一部分: 一)概述: 事实上在Linux中有两个时钟系统,分别是系统时间和硬件时间 UTC是协调世界时(Universal Time Coordinated)英文缩写,它比北京时间早8个小时.   ...

  8. tomcat域名配置

    修改tomcat目录下的web配置文件 vim conf/server.xml 在host标签内添加 <Context path="bbs" docBase="/a ...

  9. 昨天去面试,这5个Python面试题都被考到了,Python面试题No6

    第1题:字符串的拼接–如何高效的拼接两个字符串? 字符串拼接的几种方法 加号 逗号 直接连接 格式化 join 多行字符串拼接() 加号 print('Python' + 'Plus') 逗号 pri ...

  10. fit in gnuplot

    Table of Contents 1. fit-gnuplot 1 fit-gnuplot syntax >> fit [xrange][yrange] function 'datafi ...