在做管理后台功能时,经常需要用到表格展示数据,从数据库查询返回的数据,返回集合或数组到前台,然后前台将数据渲染成表格,方便直观展示数据,通常还需要结合分页、查询、排序。Datatables是一款符合上面所有需求的表格插件,基于jquery,方便我们对表格进行交互操作
Datatables中文网链接

这是一个读取本地json数据渲染表格的示例

使用步骤

一:从官网下载最新版本的插件,并在页面中应用相应的js和css文件,我这里是引用cdn提供的文件

    <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.15/css/jquery.dataTables.min.css"><script type="text/javascript" src="//code.jquery.com/jquery-1.8.2.min.js"></script><script type="text/javascript" src="//cdn.datatables.net/1.10.15/js/jquery.dataTables.min.js"></script>

二:创建页面绑定表格的插件

<table id="tableList" width="100%" ></table>

三:为元素绑定Datatables,并初始化表格配置项

var table;
var classType={1:'一班',2:'二班',3:'三班',4:'四班',5:'五班'}function createTable() {table = $('#tableList').DataTable({"bPaginate" : true,"sPaginationType" : "full_numbers","bStateSave" : true, //是否打开客户端状态记录功能,此功能在ajax刷新纪录的时候不会将个性化设定回复为初始化状态"bScrollCollapse" : true, //当显示的数据不足以支撑表格的默认的高度"bLengthChange" : true, //每页显示的记录数"bFilter" : false, //搜索栏"bSort" : true, //是否支持排序功能"bInfo" : true, //显示表格信息"bAutoWidth" : true, //自适应宽度"bJQueryUI" : false,//是否开启主题"bDestroy" : true,"bServerSide" : true,//服务器处理分页,默认是false,需要服务器处理,必须true"sAjaxDataProp" : "aData",//是服务器分页的标志,必须有"sAjaxSource" : "data.json" ,//服务器请求url,这里请求本地模拟的json数据。"columns": [{  "data": "stu_number","title":"序号","width" : "auto","render": function ( data, type, full, meta ) {return data;}},{ "data": "name","title":"姓名"},{"data":"stu_number","title":"学号"},{ "data": "age","title":"年龄"},{"data":"sex","title":"性别","render": function ( data, type, row, meta ) {if (data == 1){return '男';}else{return '女';}}},{ "data": "birthday","title":"出生年月"},{ "data": "class","title":"班级","render": function ( data, type, row, meta ) {return classType[data];}},{ "data": "class","title":"操作","render": function ( data, type, row, meta ) {if(row.class==2){return "查看"+row.class+"班学生";}else{return "查看"+row.class+"班学生";}}}],/*解决序号列没法生成的问题*/"fnDrawCallback": function(){var api = this.api();var startIndex = api.context[0]._iDisplayStart;api.column(0).nodes().each(function(cell, i) {cell.innerHTML = startIndex + i + 1;});},/*请求携带参数*/"fnServerParams":function(aoData){aoData._rand = Math.random();aoData.push({ "name": "name", "value": '可取页面dom元素如input的value'},{ "name": "class", "value": '' });}});}

四:定义好本地json模拟数据,其中返回字段说明:
sEcho:来自客户端 sEcho 传来的参数,依旧返回给客户端,用作本地计数
iTotalRecords:实际的条数。对应表格底部数据说明(从 20 条中过滤)
iTotalDisplayRecords:过滤之后,实际的条数。对应表格底部数据说明(共 4 条)
aData:服务器返回的json数据,表格展示的数据源
data.json数据如下

{"aData":[{"name":"菜菜","stu_number":20190001,"age":18,"sex":2,"birthday":"2001年12月20日","class":1},{"name":"刘菲","stu_number":20190002,"age":18,"sex":2,"birthday":"2001年11月20日","class":4},{"name":"陈阳","stu_number":20190003,"age":18,"sex":1,"birthday":"2001年1月20日","class":2},{"name":"黄一鸣","stu_number":20190004,"age":18,"sex":1,"birthday":"2001年8月20日","class":3},{"name":"程新","stu_number":20190005,"age":18,"sex":2,"birthday":"2001年7月20日","class":5}
],"iTotalDisplayRecords":5,"iTotalRecords":20,"sEcho":0
}

五:页面加载完成,完成表格绑定数据

$(function(){createTable();})

效果图如下所示,自带分页,表头可切换排序

附加说明:

一:当我们使用搜索功能时,我们在前面使用了table这个全局变量存放绑定dataTable的绑定,因此在搜索时,我们只需要为搜索的参数赋上我们查询的值即可,即‘fnServerParams’方法传递的参数取实时查询的值,然后调用 draw方法即可:

      function search(){table.draw();}

二:通过data()方法返回的长度判断服务器返回渲染后的表格数据是否为空

     if(table.data().length==0){alert("暂无数据");return;}

三:不使用本地模拟数据直接访问java后台的接口请求数据,java代码如下:

    /*** 查询数据列表* @param request* @return*/@RequestMapping(value = "/studentList", produces = "application/json;charset=UTF-8", method = {RequestMethod.POST,RequestMethod.GET})@ResponseBodypublic String studentList(HttpServletRequest request) {try {/*DataTables 用来生成的信息*/int sEcho = NumberUtils.toInt(request.getParameter("sEcho"), 0);/*起始页码,若每页显示10条数据,那么第二页参数iDisplayStart为11*/int fromRec = NumberUtils.toInt(request.getParameter("iDisplayStart"), 0);/*每页显示的数据条数,若每页显示10条数据,那么iDisplayLength为10*/int pageSize = NumberUtils.toInt(request.getParameter("iDisplayLength"), 10);/*查询参数*/String name = request.getParameter("name");/*查询参数*/int classNum = NumberUtils.toInt(request.getParameter("class"));Map<String, Object> param = new HashedMap<String, Object>(4);param.put("fromRec", fromRec);param.put("endRec", pageSize);param.put("name", name);param.put("classNum", classNum);List<Student> list = new ArrayList<>();int count = studentService.queryListCount(param);if (count > 0) {list = studentService.queryList(param);}Map<String, Object> retMap = new HashMap<>(4);retMap.put("sEcho", sEcho);retMap.put("iTotalRecords", count);retMap.put("iTotalDisplayRecords", count);retMap.put("aData", CollectionUtils.isEmpty(list) ? new ArrayList<>() : list);return JSONObject.toJSONString(retMap);} catch (Exception e) {e.printStackTrace();} Map<String, Object> retMap = new HashMap<>(4);retMap.put("sEcho", 0);retMap.put("iTotalRecords", 0);retMap.put("iTotalDisplayRecords", 0);retMap.put("aData", new ArrayList<>());return JSONObject.toJSONString(retMap);}

原文作者技术博客:https://www.jianshu.com/u/ac4daaeecdfe
95后前端妹子一枚,爱阅读,爱交友,将工作中遇到的问题记录在这里,希望给每一个看到的你能带来一点帮助。
欢迎留言交流。

Datatables——一款前端好用的表格插件,本地json模拟数据实现表格分页查询相关推荐

  1. 2020年你应该关注这50款前端热门工具,JavaScript插件篇(一)

    前端之所以有趣,就是每年有比较多新奇的插件和工具值得我们去探索和研究.我们在开发前端应用时,自然少不了去找一些第三方插件帮助我们提高开发效率.本文给大家介绍的这50款新工具,都是相当的新,都是去年的新 ...

  2. bootstrap表格插件php,深入了解Bootstrap table表格插件(一)

    这篇文章主要为大家介绍了第一次学习Bootstrap table表格插件的笔记,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 第一次使用Bootstrap-table这个表格插件,记录一下使用过程 ...

  3. Bootstrap Table表格插件的使用及数据导出

    文章目录 1.介绍 2.页面引用 3.简单示例 4.注意地方 5.演示图 1.介绍 Bootstrap Table介绍见官网:http://bootstrap-table.wenzhixin.net. ...

  4. JS利用for循环 画表格 解析json字符串数据 写入表格

    背景:因为工作需要,需要讲数据拆分之后放入表格中,一共需要64行8列,总不能手动搞吧,于是便想先获取行数,再根据行数决定画多少行,但是数据获取有问题,暂时这块没有解决,只利用for循环画了64行,然后 ...

  5. 前端开发没拿到接口该如何模拟数据呢?

    在日常开发过程中后端有时接口还没出来,这个时候我们需要用到数据,那么就需要模拟数据了. 本地json文件: 这种方法很简单,就是新建一个json文件作为数据请求 mock数据 线下 需要下载mockj ...

  6. 简单的动态网页(表格)——将SQL Server的数据读入表格中

    实现步骤: 1.把静态网页读到内存中2.把班级信息从数据库中读出来(运用ADO.NET)3.创建一个虚拟表存适配后的数据4.将SQL数据库和C#连接5.创建SQL适配器对象,通过适配器对象执行SQL语 ...

  7. 前端写json模拟数据

    1.添加json数据 {"status":"1","msg":"成功","data":{" ...

  8. 25款顶级的jQuery表格插件

    jQuery 表格插件可以让你创建各种各样的表格布局,表格布局是报纸和杂志中最常见的布局,现在的网站中也很常见,在这篇文章中,我向大家推荐25个jQuery 的表格插件,你可以任意控制表格的行和列,用 ...

  9. JS表格插件DataTables

    简介 DateTables是一款jQuery表格插件,可以将任何HTML表格添加交互功能. 分页,即时搜索和排序 几乎支持任何数据源:DOM, javascript, Ajax 和 服务器处理 支持不 ...

最新文章

  1. tcpdump抓包文件提取http附加资源
  2. QGC地面站参数调节
  3. linkin大话面向对象--多态
  4. 程序员修神之路--设计一套RPC框架并非易事
  5. 【每日一题】7月20日题目精讲—着色方案
  6. 启发式算法在最优化问题求解中的应用与实践
  7. 知识关联的价值还无法与人的关联的价值相比
  8. java继承类长方形面积_java_java用接口、多态、继承、类计算三角形和矩形周长及面积的方法,本文实例讲述了java用接口、多 - phpStudy...
  9. C# lambda与表达式树
  10. 新手如何检查MacBook电池的运行状况
  11. 南油外服-网易游戏测试(外包) 面试
  12. mysql和虚拟主机区别_虚拟主机mysql
  13. 时钟、背景音乐、背景图片
  14. with ties 的用法
  15. python实现运动模糊图像_OpenCV+Python实现图像运动模糊和高斯模糊!它是编程界的PS!...
  16. 三星s8android版本,三星Galaxy S8的手机系统是什么
  17. 使用mars3d时第二次进行hls视频融合报错
  18. 政府赠予固定资产或者捐赠资金的会计分录
  19. OBIEE + OAS集群配置 Part 1
  20. cartographer自动更新地图,2条路径数据合并为1条数据

热门文章

  1. python频域三维图_深入浅出通信原理连载1-21(Python代码版)
  2. 基于SNMP通过OID获取思科、锐捷、迈普等交换机的CPU、内存使用率
  3. springboot实战—BMI体脂计算器-客户端
  4. HTML失败怎么解决,CSS加载失败怎么处理?
  5. 使用reCAPTCHA实现验证码
  6. LoadRunner 是要保存此文件,还是要联机查找程序来打开此文件
  7. RIGOL示波器测试特殊功能
  8. Mstar晨星机芯的智能电视固件更新MMC的语法说明
  9. 2021-07-01验证用户账号密码登录,三次输入错误要验证码
  10. Tanner L-Edit 系列教程:03 文件操作