博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用jQuery开发datatable分页表格插件
阅读量:4316 次
发布时间:2019-06-06

本文共 3433 字,大约阅读时间需要 11 分钟。

   

  当系统数据量很大时,前端的分页、异步获取方式就成了较好的解决方案。一直以来,我都希望使用自己开发的 jquery 插件做系统。

  现在,学习了 jquery 插件开发之后,渐渐地也自己去尝试着开发一些简单的插件,之前已经开发了手风琴、选项卡,今天和大家介绍一下这个 datatable 分页表格插件。

  我们先讲解使用,再分析插件的实现方式。

  手册地址:

 

1、引入jquery库和插件库、css文件

首先需要引入 jquery 库,因为我们的 datatable 插件依赖另外一个分页插件,所有需要先把这个分页插件库引入进来,最后再引入 datatable 插件的 js 和 css 文件

1 2 3 4 
5 6 7

 

2、插件使用

下面我们就介绍下插件如何使用。

首先,我们需要写一个 table 标签,其实,最主要的代码就只有第 5 行的 table 标签,前面的几个 button 是为了看插件交互的。

1 2 3 4 5 

 

然后,我们需要写一段 script 脚本来初始化 datatable 组件,以及加载首页数据。

1 $("#first-datatable").datatable({ 2     width: "1000", 3     height: "auto", 4     columns: [ 5         { field: "id", columnName: "编号", css: { "text-align": "center" } }, 6         { field: "username", columnName: "用户名" }, 7         { field: "age", columnName: "年龄" }, 8         { field: "phone", columnName: "联系电话", css: { "text-align": "center" } }, 9         { field: "email", columnName: "邮箱" },10         { field: "description", columnName: "自我介绍" }11     ],12     url: "/jq-ui/ajax/admin_json.jsp",13     pageNum: 1,            // 显示第几页数据,默认114     pageSize: 15,        // 每页数据数量,默认1015     pagination: true,    // 是否启用分页组件,默认启用16     showCheckbox: true17 });

我们简单介绍一下参数:

  width:  是包裹 table 标签的 div 的宽度,您可以不设置这个参数的值,默认使用的 100% 即父元素的宽度

  height:     是包裹 table 标签的 div 的高度,默认 auto

  columns:  是一个 object[] 对象,定义 table 的列信息,包括列名、字段的 key、css样式

  url:           获取异步数据的远程地址

  pageNum:初始化时显示第几页数据

  pageSize:每页显示多少数据

  pagination:是否启用分页组件

  showCheckbox:是否显示行首的复选框,这个参数在需要进行数据选择时使用

 

后台代码就不在这个介绍了,如果需要可以去下载插件项目代码。后台返回一个 json 数据,应该包括最大页数、数据集合信息,如下:

  

 

现在,可以看到插件的效果了:

  

 

 3、插件的实现方式和核心函数

插件初始化时首先生成 thead 和 表头,然后在 table 外面包裹一个 div , 然后通过参数配置的 url 参数获取数据,加载到 table 的 tbody 中。在这个过程中,会通过参数判断是否显示行首的复选框和分页组件。分页插件我们不做重点介绍,datatable 插件中的代码如下:

1 if(options["pagination"]) { 2     // 先把之前的分页组件删除 3     $datatable.parent().find(".pagination").remove(); 4     // 定义一个div用于显示分页组件 5     var $pagination = $("
").css("margin-top", "10px"); 6 // 初始化分页组件 7 $pagination.pagination({ 8 pageNum: options["pageNum"], 9 size: options["pageSize"],10 total: data["totalPage"],11 click: function(curr, s) {12 options["pageNum"] = curr;13 $.data(this, "datatable", options);14 loadData($datatable);15 return data["totalPage"];16 }17 });18 // 把分页组件追加到datatable组件19 $datatable.parent().append($pagination);20 }

 

为了方便用户获取数据、刷新表格,插件提供了两个函数:

  

 

4、刷新、获取

下面我们简单介绍下如何使用 reload 和 getSelectRows 函数

删除按钮的事件函数:

1 /* 2  * 删除函数 3  */ 4 function del(tid) { 5     var rows = $("#" + tid).datatable("getSelectRows"); 6     if(rows.length < 1) { 7         alert("请至少选择一条数据"); 8         return; 9     }10     var ids = new Array();11     for(var i = 0; i < rows.length; i++) {12         var id = rows[i]["id"];13         ids.push(id);14     }15     console.log(ids);16     $.ajax({17         type: "post",18         dataType: "json",19         data: { "ids": ids},20         traditional: true,21         url: "/jq-ui/ajax/admin_del.jsp",22         success: function(data) {23             if(data["retCode"] == '0') {24                 alert("删除成功");25                 $("#" + tid).datatable("reload");26             }27         }28     });29 }

 

更新按钮的事件函数类似,就不再重复介绍了。

 

刷新按钮的事件函数:

1 /*2  * 点击"刷新"后调用datatable的reload函数重新加载数据3  */4 function reload(id) {5     $("#" + id).datatable("reload");6 }

 

5、项目地址

datatable.js 

datatable.css 

演示项目在 

github项目在 

 

转载于:https://www.cnblogs.com/xugf/p/8541744.html

你可能感兴趣的文章
转载:基于《知网》的词汇语义相似度计算
查看>>
常用C库简介
查看>>
Linux 上的常用文件传输方式介绍与比较
查看>>
[转载]电话销售技巧全面大攻略
查看>>
LZW压缩算法原理及其Java实现
查看>>
VNC-Server installation on CentOS 7
查看>>
Unity中用触摸控制物体旋转和放大
查看>>
hibernate
查看>>
appium环境安装
查看>>
uva 10859
查看>>
ssm整合-动态项目-day13
查看>>
Visual Studio Debug
查看>>
Souerce 之 图片格式
查看>>
PD 之 连接数据库并导出数据及生成PDM文件
查看>>
Java&nbsp;IO&nbsp;操作
查看>>
SharePoint 2010 Warmup server script
查看>>
单变量微积分笔记6——线性近似和二阶近似
查看>>
补几天前的读书笔记
查看>>
HDU 1829/POJ 2492 A Bug's Life
查看>>
[UOJ UR#16]破坏发射台
查看>>