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

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

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

  手册地址:http://5ijy01.duapp.com/jq-ui/index.html?tab=tab12

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

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

 <script type="text/javascript" src="js/jquery/jquery-1.7.2.min.js"></script>

 <script type="text/javascript" src="js/pagination.js"></script>
<link rel="stylesheet" href="css/blue/pagination.css"/> <script type="text/javascript" src="js/datatable.js"></script>
<link rel="stylesheet" href="css/blue/datatable.css"/>

2、插件使用

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

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

 <button class="default-button" onclick="update();">修 改</button>
<button class="default-button" onclick="del();">删 除</button>
<button class="default-button" onclick="reload();">刷 新</button> <table id="first-datatable"></table>

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

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

我们简单介绍一下参数:

  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 插件中的代码如下:

 if(options["pagination"]) {
// 先把之前的分页组件删除
$datatable.parent().find(".pagination").remove();
// 定义一个div用于显示分页组件
var $pagination = $("<div></div>").css("margin-top", "10px");
// 初始化分页组件
$pagination.pagination({
pageNum: options["pageNum"],
size: options["pageSize"],
total: data["totalPage"],
click: function(curr, s) {
options["pageNum"] = curr;
$.data(this, "datatable", options);
loadData($datatable);
return data["totalPage"];
}
});
// 把分页组件追加到datatable组件
$datatable.parent().append($pagination);
}

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

  

4、刷新、获取

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

删除按钮的事件函数:

 /*
* 删除函数
*/
function del(tid) {
var rows = $("#" + tid).datatable("getSelectRows");
if(rows.length < 1) {
alert("请至少选择一条数据");
return;
}
var ids = new Array();
for(var i = 0; i < rows.length; i++) {
var id = rows[i]["id"];
ids.push(id);
}
console.log(ids);
$.ajax({
type: "post",
dataType: "json",
data: { "ids": ids},
traditional: true,
url: "/jq-ui/ajax/admin_del.jsp",
success: function(data) {
if(data["retCode"] == '0') {
alert("删除成功");
$("#" + tid).datatable("reload");
}
}
});
}

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

刷新按钮的事件函数:

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

5、项目地址

datatable.js http://5ijy01.duapp.com/jq-ui/js/datatable.js

datatable.css http://5ijy01.duapp.com/jq-ui/css/blue/datatable.css

演示项目在 http://5ijy01.duapp.com/jq-ui/index.html

github项目在 https://github.com/xuguofeng/jq-ui

使用jQuery开发datatable分页表格插件的更多相关文章

  1. 基于JQuery可拖动列表格插件DataTables的踩坑记

    前言 最近项目中在使用能够拖动列调整列位置顺序的表格插件---DataTables,这也是目前我找到的唯一一种存在有这种功能的插件. 在查找使用方法的过程中发现可用案例并不多,且大多言语不详.本文将全 ...

  2. JQuery中的DataTables表格插件

    一.DataTables表格插件的简介 DataTables是一个jQuery的表格插件.它具有以下特点: 自动分页处理 即时表格数据过滤 数据排序以及数据类型自动检测 自动处理列宽度 可通过CSS定 ...

  3. bootstrap 分页表格插件

    找了两个table的插件,一个是bootstrap table ,另一个是bootstrap-paginator 这里只介绍 bootstrap table 插件 使用及简单案例 文档介绍:http: ...

  4. jQuery ajax 实现分页 kkpager插件

    代码片段一: <!--分页组件 JS CSS 开始--> <!--分页组件 CSS--> <link type="text/css" href=&qu ...

  5. 使用jQuery开发messager消息框插件

    1.插件使用 首先引入jquery库,然后引入dialog.js.dialog.css.messager.js.messager.css,如下: <script type="text/ ...

  6. 一些基于jQuery开发的控件

    基于jQuery开发,非常简单的水平方向折叠控件.主页:http://letmehaveblog.blogspot.com/2007/10/haccordion-simple-horizontal-a ...

  7. Datatables快速入门开发--一款好用的JQuery表格插件

    博主是一个java后端程序员小白,前端技术会用但不精通,做后台的一些功能经常要涉及表格的展示,分页,搜索,排序等等一系列功能,在经历了一段时间的原始手段,开始接触并使用Datatables,一个jqu ...

  8. 001_ jQuery的表格插件dataTable详解

    一. 1.启用id为"datatable1"标签的html的表格jQuery库 $("#datatable1").dataTable( ) Reference: ...

  9. 前端开发:一个开源、简单易用的jQuery表格插件(DataTables)

    DataTables是一个基于jQuery库的开源(MIT协议)表格插件,支持添加.排序.分页.搜索.过滤等功能,使用简单.广受欢迎,能够与主流前端UI整合(如bootstrap.jQuery UI等 ...

随机推荐

  1. 【BIRT】汉化设计器

    点击下面文字即可下载汉化包 birt汉化_plugins.rar 下载完成之后,解压: 将上述文件copy到目录../eclipse/plugins/下即可 文件复制后,重新启动eclipse,则已经 ...

  2. -bash: /bin/grep: Argument list too long和 find: Arguments to -type should contain only one letter报错处理

    由于要查找的文件太多 过滤成只找具体时间一天以内的文件 | 查找最近30分钟修改的当前目录下的.php文件 查找最近24小时修改的当前目录下的.php文件 查找最近24小时修改的当前目录下的.php文 ...

  3. Python 拼接字符串的几种方式

    在学习Python(3x)的过程中,在拼接字符串的时候遇到了些问题,所以抽点时间整理一下Python 拼接字符串的几种方式. 方式1,使用加号(+)连接,使用加号连接各个变量或者元素必须是字符串类型( ...

  4. Centos7安装Redis5.0.5并加入Systemd服务

    1. 安装gcc-c++, tcl yum install gcc-c++ tcl 2. 解压缩, 编译, 测试 tar zxvf redis-5.0.5.tar.gz make make test ...

  5. Laya中地图拼接的缝隙问题

    拼图的空隙. Egret也有拼图的空隙.比如制作飞机游戏,背景拼接轮换着下移,有明显的缝隙.用TextureMerger可以解决. 看了下Laya.可以设置repeat. 编辑模式,图片上右键,设置默 ...

  6. 【视频开发】【Live555】通过live555实现H264 RTSP直播

    前面的文章中介绍了<H264视频通过RTMP流直播>,下面将介绍一下如何将H264实时视频通过RTSP直播. 实现思路是将视频流发送给live555, 由live555来实现H264数据流 ...

  7. IDEA--IDEA debug断点调试技巧

      目录 一.Debug开篇 二.基本用法&快捷键 三.变量查看 四.计算表达式 五.智能步入 六.断点条件设置 七.多线程调试 八.回退断点 九.中断Debug Debug用来追踪代码的运行 ...

  8. windwos 安装 vue-cli

    安装vue-cli 安装之前我们需要先安装node.js以及包管理工具npm,有兴趣的可以安装nvm版本管理工具 地址:https://www.cnblogs.com/lph970417/p/1184 ...

  9. Java程序运行机制

    Java程序运行机制 编译型(compile) 它有一个负责翻译的程序(编译器),将我们写的 Java 源代码转为计算机可执行的代码 举个例子:把一本中文书翻译成英文书 应用:操作系统.C.C++ 解 ...

  10. Saltstack限制某些shell命令执行

    在cmdmod模块中cmd.run.cmd.run_all.cmd.run_stdout等都可以执行shell命令,要静止某些shell命令,可以修改_run()这个函数来彻底的静止调用这个命令. c ...