使用jquery开发datatable分页表格插件(代码片段)

用户不存在! 用户不存在!     2022-10-24     680

关键词:

   

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

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

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

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

 

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

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

1 <script type="text/javascript" src="js/jquery/jquery-1.7.2.min.js"></script>
2 
3 <script type="text/javascript" src="js/pagination.js"></script>
4 <link rel="stylesheet" href="css/blue/pagination.css"/>
5 
6 <script type="text/javascript" src="js/datatable.js"></script>
7 <link rel="stylesheet" href="css/blue/datatable.css"/>

 

2、插件使用

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

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

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

 

然后,我们需要写一段 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,            // 显示第几页数据,默认1
14     pageSize: 15,        // 每页数据数量,默认10
15     pagination: true,    // 是否启用分页组件,默认启用
16     showCheckbox: true
17 );

我们简单介绍一下参数:

  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 = $("<div></div>").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 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 DataTables 服务器端分页

...2012-07-1811:22:24【问题描述】:在我的网络应用程序中,我使用JQueryDataTables插件来显示从数据库检索到的数据。我目前正在使用客户端分页,但我的表格中的数据增长了很多,并且在ASP.NET页面中的加载现在变得有点慢。所以我打... 查看详情

datatables使用方式

 datatables是一款基于jQuery开发的开源免费的表格插件,它有完整全面的功能、丰富的api和支持、优秀的质量和稳定性及性能,强大的功能包括(且不限于):支持Ajax数据获取,提供真分页实现方案.提供多种常见主题支持DataTabl... 查看详情

datatable使用介绍(代码片段)

Datatables是一款jquery表格插件。它是一个高度灵活的工具,可以将任何HTML表格添加高级的交互功能。1、支持分页:前台分页和后台分页前台分页:后台一次把数据传过来,交给前端渲染。缺点:初次渲染时间长;优点:渲染完成... 查看详情

jquery datatable插件aadata格式不显示表格

...:2014-02-1206:27:46【问题描述】:我是jquery的新手。我正在使用jquery数据表插件。我试图用数据表显示aadata数组,但我没有显示数据表,我只能看到空页面。谁能帮我解决我哪里出错了?下面是我使用的代码。$(docum 查看详情

使用 DataTables 插件的服务器端分页

】使用DataTables插件的服务器端分页【英文标题】:ServersidepaginationusingDataTablesplugin【发布时间】:2014-11-1311:53:12【问题描述】:服务器每页返回15条记录,总记录超过2000条。我想显示前15条记录,然后在每次单击“下一步”按钮... 查看详情

datatables的使用(代码片段)

...加载等众多好用的功能项目地址:https://datatables.net/基本使用需要用到的JS和CSS文件位于项目代码下的media目录中,需要将这个目录中的对应文件放入你的项目里,这一步不赘述引入CSS/JS文件,由于Datatables是基于Jquery的,所以要... 查看详情

jQuery DataTables 分页大小

...ginationSize【发布时间】:2011-12-2411:27:28【问题描述】:我使用jQueryDataTables插件(http://datatables.net)已经有一段时间了,通常我们使用默认大小和使用"bStateSave":true选项非常好。但是现在我真的需要将分页的大小设置为不是[10... 查看详情

001_jquery的表格插件datatable详解

一、1.启用id为"datatable1"标签的html的表格jQuery库$("#datatable1").dataTable() Reference:http://www.w3school.com.cn/jquery/jquery_syntax.asphttps://datatables.net/ #官网http://datatables.club/example/diy. 查看详情

问题:使用 jquery 插件 tablesorter 进行表格排序和分页

】问题:使用jquery插件tablesorter进行表格排序和分页【英文标题】:Problem:tablesortingandpaginationwithjqueryplugintablesorter【发布时间】:2010-06-1015:03:16【问题描述】:我有一个有100行的表,它也有分页。每页显示10条记录。我正在使用jq... 查看详情

使用 jQuery DataTables 插件,fnAddData() 是不是将行添加到 html 表格的顶部或底部?

】使用jQueryDataTables插件,fnAddData()是不是将行添加到html表格的顶部或底部?【英文标题】:UsingjQueryDataTablesplugin,doesfnAddData()addrowstothetoporbottomofanhtmltable?使用jQueryDataTables插件,fnAddData()是否将行添加到html表格的顶部或底部?【... 查看详情

jquery dataTables 插件可以在排序/过滤后尊重备用行颜色吗?

...ering?【发布时间】:2015-08-2716:29:14【问题描述】:我正在使用jquerydatatablesplugin,这似乎是一个有用的插件,可以获取常规html表格并添加排序、过滤、分页等我看到的 查看详情

jQuery / DataTables:如何更改分页颜色

...ncolor【发布时间】:2013-12-0913:19:18【问题描述】:我正在使用jQueryDataTables插件(版本1.9.4)并想更改分页的颜色。使用CSS我可以更改它们的背景颜色,但我找不到更改锚标记的字体颜色和字体悬停颜色的方法。我想将以下所有锚... 查看详情

jQuery DataTables 中的下拉分页

...les【发布时间】:2012-10-1917:32:48【问题描述】:是否可以使用jquery数据表进行如下图所示的下拉分页?【问题讨论】:您能分享一下您是如何实现这一目标的吗?【参考方案1】:是的-使用这样的插件:http://datatables.net/plug-ins/pag... 查看详情

DataTables jQuery插件服务器端处理,通过ajax删除后智能分页

...iaajax【发布时间】:2012-12-1018:07:03【问题描述】:任务:使用ajax从表行中的链接删除db中的记录,并在(awesome:)DataTablesjQuery插件(link)中维护过 查看详情

如何更改 DataTables jQuery 插件的分页按钮数量

】如何更改DataTablesjQuery插件的分页按钮数量【英文标题】:HowtochangethenumberofpaginationbuttonsoftheDataTablesjQueryplugin【发布时间】:2014-08-1413:10:13【问题描述】:默认情况下,DataTables插件显示7个分页按钮(包括省略号)喜欢上一个123... 查看详情

如何设置jquery插件datatables属性邵珠庆の博客

... 110多个例子;  对AdobeAIR的完全支持。  引入  使用  Javascript代码  $(document).ready(function()  $(\'#example\').dataTable();  );    // 另一个例子  $(document).ready(function()  $(\'#example\').dataTable(  "bInfo": false ... 查看详情

基于 Datatable Jquery 的插件 - 表格 - 表格中可折叠的问题 - Javascript/HTML

...关注可以按结果过滤和排序的护理访问。尽管我从未真正使用过Javascri 查看详情

jQuery DataTables:如何更改分页活动颜色?

...color?【发布时间】:2016-12-0504:54:20【问题描述】:我正在使用jQueryDataTables插件并想更改分页的颜色。使用CSS我想同时更改字体颜色、悬停字体颜色和活动页面颜色。分页代码如下:<script>$(document).ready( 查看详情