Jquery DataTables相关示例

一、Jquery-DataTables

DataTables 是jquery的一个开源的插件。它具有高度灵活的特性,基于渐进增强的基础,可以为任何表格添加交互。它特性如下:

  • 提供分页,搜索和多列排序;
  • 支持所有类型的数据源:
  • DOM,javascript,Ajax和服务器端的处理;
  • 简洁的主题,DataTables,JQuery UI,Bootstrap,Foundation;
  • 支持各种扩展,包括编辑器, 表格工具, 固定列等;
  • 丰富的可配置选项、富有表现力的api;

  DataTabels下载地址为:http://www.datatables.net/download/index。这里使用到的版本是1.10.6。

二、示例代码

1、数据源为javascript数组

  网页代码如下:

  1 <!DOCTYPE html>
  2 <html>
  3 <head>
  4 
  5 <meta charset="utf-8"/>
  6 <title>jquery-datatable 版本  1.10.6</title>
  7     
  8     <style type="text/css"> 
  9     /** 表格内容截取 */
 10     table{table-layout: fixed;border-collapse: collapse;}
 11     td{overflow: hidden;text-overflow:ellipsis;} /**/
 12     </style>
 13 </head>
 14 <body>
 15     <div>
 16         <table border="1"  id="example_2"  style="width: 100%;" >
 17         </table>        
 18     </div>
 19 <script type="text/javascript" src="./script/jquery-1.10.2.min.js"></script> 
 20 <script type="text/javascript" src="./plugins/data-table-1.10.6/jquery.dataTables.js"></script>  
 21 <script type="text/javascript">
 22 var dataSet = [
 23     ['Trident','InternetInternet Internet Internet Internet Internet Internet Internet Internet Internet Internet Internet Internet Explorer 4.0','Win 95+','4','X'],
 24     ['Trident','Internet Explorer 5.0','Win 95+','5','C'],
 25     ['Trident','Internet Explorer 5.5','Win 95+','5.5','A'],
 26     ['Trident','Internet Explorer 6','Win 98+','6','A'],
 27     ['Trident','Internet Explorer 7','Win XP SP2+','7','A'],
 28     ['Trident','AOL browser (AOL desktop)','Win XP','6','A'],
 29     ['Gecko','Firefox 1.0','Win 98+ / OSX.2+','1.7','A'],
 30     ['Gecko','Firefox 1.5','Win 98+ / OSX.2+','1.8','A'],
 31     ['Gecko','Firefox 2.0','Win 98+ / OSX.2+','1.8','A'],
 32     ['Gecko','Firefox 3.0','Win 2k+ / OSX.3+','1.9','A'],
 33     ['Gecko','Camino 1.0','OSX.2+','1.8','A'],
 34     ['Gecko','Camino 1.5','OSX.3+','1.8','A'],
 35     ['Gecko','Netscape 7.2','Win 95+ / Mac OS 8.6-9.2','1.7','A'],
 36     ['Gecko','Netscape Browser 8','Win 98SE+','1.7','A'],
 37     ['Gecko','Netscape Navigator 9','Win 98+ / OSX.2+','1.8','A'],
 38     ['Gecko','Mozilla 1.0','Win 95+ / OSX.1+',1,'A'],
 39     ['Gecko','Mozilla 1.1','Win 95+ / OSX.1+',1.1,'A'],
 40     ['Gecko','Mozilla 1.2','Win 95+ / OSX.1+',1.2,'A'],
 41     ['Gecko','Mozilla 1.3','Win 95+ / OSX.1+',1.3,'A'],
 42     ['Gecko','Mozilla 1.4','Win 95+ / OSX.1+',1.4,'A'],
 43     ['Gecko','Mozilla 1.5','Win 95+ / OSX.1+',1.5,'A'],
 44     ['Gecko','Mozilla 1.6','Win 95+ / OSX.1+',1.6,'A'],
 45     ['Gecko','Mozilla 1.7','Win 98+ / OSX.1+',1.7,'A'],
 46     ['Gecko','Mozilla 1.8','Win 98+ / OSX.1+',1.8,'A'],
 47     ['Gecko','Seamonkey 1.1','Win 98+ / OSX.2+','1.8','A'],
 48     ['Gecko','Epiphany 2.20','Gnome','1.8','A'],
 49     ['Webkit','Safari 1.2','OSX.3','125.5','A'],
 50     ['Webkit','Safari 1.3','OSX.3','312.8','A'],
 51     ['Webkit','Safari 2.0','OSX.4+','419.3','A'],
 52     ['Webkit','Safari 3.0','OSX.4+','522.1','A'],
 53     ['Webkit','OmniWeb 5.5','OSX.4+','420','A'],
 54     ['Webkit','iPod Touch / iPhone','iPod','420.1','A'],
 55     ['Webkit','S60','S60','413','A'],
 56     ['Presto','Opera 7.0','Win 95+ / OSX.1+','-','A'],
 57     ['Presto','Opera 7.5','Win 95+ / OSX.2+','-','A'],
 58     ['Presto','Opera 8.0','Win 95+ / OSX.2+','-','A'],
 59     ['Presto','Opera 8.5','Win 95+ / OSX.2+','-','A'],
 60     ['Presto','Opera 9.0','Win 95+ / OSX.3+','-','A'],
 61     ['Presto','Opera 9.2','Win 88+ / OSX.3+','-','A'],
 62     ['Presto','Opera 9.5','Win 88+ / OSX.3+','-','A'],
 63     ['Presto','Opera for Wii','Wii','-','A'],
 64     ['Presto','Nokia N800','N800','-','A'],
 65     ['Presto','Nintendo DS browser','Nintendo DS','8.5','C/A<sup>1</sup>'],
 66     ['KHTML','Konqureror 3.1','KDE 3.1','3.1','C'],
 67     ['KHTML','Konqureror 3.3','KDE 3.3','3.3','A'],
 68     ['KHTML','Konqureror 3.5','KDE 3.5','3.5','A'],
 69     ['Tasman','Internet Explorer 4.5','Mac OS 8-9','-','X'],
 70     ['Tasman','Internet Explorer 5.1','Mac OS 7.6-9','1','C'],
 71     ['Tasman','Internet Explorer 5.2','Mac OS 8-X','1','C'],
 72     ['Misc','NetFront 3.1','Embedded devices','-','C'],
 73     ['Misc','NetFront 3.4','Embedded devices','-','A'],
 74     ['Misc','Dillo 0.8','Embedded devices','-','X'],
 75     ['Misc','Links','Text only','-','X'],
 76     ['Misc','Lynx','Text only','-','X'],
 77     ['Misc','IE Mobile','Windows Mobile 6','-','C'],
 78     ['Misc','PSP browser','PSP','-','C'],
 79     ['Other browsers','All others','-','-','U']
 80 ];
 81 $(document).ready(function(){     
 82     $('#example_2').dataTable( {
 83         "data": dataSet,
 84         "aoColumns": [
 85             { "title": "引擎" , "sWidth" : "30%" },
 86             { "title": "浏览器" , "sWidth" : "10%"},
 87             { "title": "平台" , "sWidth" : "20%" },
 88             { "title": "版本", "class": "center" , "sWidth" : "20%"},
 89             { "title": "等级", "class": "center" , "sWidth" : "20%"}
 90         ],
 91         "bPaginate": true, //开关,是否显示分页器
 92         "bServerSide": false,//服务器端分页
 93         "bSort": false, //开关,是否启用各列具有按列排序的功能
 94         "bSortClasses": false,
 95         "bFilter": false, //开关,是否启用客户端过滤器 
 96         "bAutoWidth": false, //自动设置宽度关闭 
 97         "aoColumnDefs" : [ {
 98             sDefaultContent : '',
 99             aTargets : [ '_all' ]
100         } ],
101         "oLanguage": {
102             "sProcessing": "正在加载中......",
103             "sLengthMenu": "每页显示 _MENU_ 条记录",
104             "sZeroRecords": "对不起,查询不到相关数据!",
105             "sEmptyTable": "表中无数据存在!",
106             "sInfo": "当前显示 _START_ 到 _END_ 条,共 _TOTAL_ 条记录",
107             "sInfoFiltered": "数据表中共为 _MAX_ 条记录",
108             "sInfoEmpty" : "显示0到0条记录",
109             "sSearch": "搜索",
110             "oPaginate": {
111                 "sFirst": "首页",
112                 "sPrevious": "上一页",
113                 "sNext": "下一页",
114                 "sLast": "末页"
115             }
116         } //多语言配置
117     });   
118 
119 });
120 </script>                                            
121 </body>
122 </html>

2、动态读取服务器数据

  网页代码如下:

  1 <!DOCTYPE html>
  2 <html>
  3 <head>
  4 
  5 <meta charset="utf-8"/>
  6 <title>jquery-datatable 版本  1.10.6</title>
  7     
  8     <style type="text/css"> 
  9     /** 表格内容截取 */
 10     table{table-layout: fixed;border-collapse: collapse;}
 11     td{overflow: hidden;text-overflow:ellipsis;} /**/
 12     </style>
 13 </head>
 14 <body>
 15     <div>     
 16         <table  id="sample_1">
 17             <thead>
 18             <tr>
 19                 <th>序号</th>
 20                 <th>学号</th>
 21                 <th>姓名</th>
 22                 <th>年龄</th>
 23                 <th>性别</th>     
 24                 <th>籍贯</th>
 25                 <th>班级</th>
 26                 <th>生日</th>
 27                 <th>操作</th>
 28             </tr>
 29             </thead> 
 30             <tbody>
 31             </tbody>
 32         </table>
 33     </div>
 34 <script type="text/javascript" src="./script/jquery-1.10.2.min.js"></script> 
 35 <script type="text/javascript" src="./plugins/data-table-1.10.6/jquery.dataTables.js"></script>  
 36 $(document).ready(function(){ 
 37         
 38      var oTable = $('#sample_1').dataTable( {  
 39         "sAjaxSource": "${ctx}/student/data.action",
 40         "sServerMethod": "POST" ,   //以post的方式提交数据
 41         "fnServerParams": function ( aoData ) {//此处设置查询条件,根据条件进行查询列表
 42           aoData.push( { "name": "nage", "value": $("#name").val()} );//年龄过滤
 43           aoData.push( { "name": "classId", "value": $("#classId").val()} );//班级id过滤
 44            aoData.push( { "name": "birthday", "value": $("#birthday").val()} );  //生日过滤
 45            aoData.push( { "name": "city", "value": $("#city").val()} );  //生日过滤
 46         },  
 47         "aoColumns": [
 48             {  "sName": "index",
 49                 "sWidth": "4%", //设置宽度
 50                 "sClass": "center",
 51                 "bSearchable": false,
 52                 "bStorable": false,
 53                 "fnRender": function (a) {
 54                     return a.iDataRow + 1;
 55                 }
 56             },
 57             {    "mData": "no", 
 58                 "sWidth": "10%"
 59             },
 60             {    "mData": "name" ,
 61                 "sWidth": "10%"
 62             },
 63             {    "mData": "graduationDate" ,
 64                 "sWidth": "10%"
 65             },
 66             {    "mData": "gender" ,
 67                 "sWidth": "10%"
 68             },
 69             {    "mData": "city" ,
 70                 "sWidth": "10%"
 71             },
 72             {    "sName": "className",
 73                 "sWidth": "10%",
 74                 "sClass": "center",
 75                 "bSearchable": false,
 76                 "bStorable": false,
 77                 "fnRender": function (a) {
 78                 var result="";
 79                     jQuery.ajax({//通过classId获取班级名称
 80                         url: "${ctx}/class/"+a.aData.classId,
 81                         type: "get",
 82                         async: false,  // false 为同步
 83                         dataType: "json",
 84                         success: function(data){
 85                             result = data.class.id;
 86                         }
 87                     });
 88                     return result; 
 89                 }
 90             },
 91             {    "mData": "birthday", 
 92                 "sWidth": "10%"
 93             },
 94             {    "sName": "action",
 95                 "sWidth": "10%",
 96                 "sClass": "center",
 97                 "bSearchable": false,
 98                 "bStorable": false,
 99                 "fnRender": function (a) {
100                     var s = "<a  href=\"${ctx}/control/monitor/rule/step1.action?rid=" + a.aData.id + "\">修改</a> ";  
101                     var e = "<a  href=\"${ctx}/control/monitor/rule/detail.action?rid=" + a.aData.id + "\">详情</a> ";  
102                     return s + e;  
103                 }
104             }
105         ],
106         "bPaginate": true, //开关,是否显示分页器
107         "bServerSide": true,//服务器端分页
108         "bSort": false, //开关,是否启用各列具有按列排序的功能
109         "bSortClasses": false,
110         "bFilter": false, //开关,是否启用客户端过滤器
111         "sSearch" : false, //不过滤
112         "sAjaxDataProp":  "rows",  //服务器端返回的json中对象数组对应的key
113         "bAutoWidth": false, //自动设置宽度关闭
114         "aoColumnDefs" : [ {
115        sDefaultContent : '',
116           aTargets : [ '_all' ]
117         } ],
118         "oLanguage": {
119             "sProcessing": "正在加载中......",
120             "sLengthMenu": "每页显示 _MENU_ 条记录",
121             "sZeroRecords": "对不起,查询不到相关数据!",
122             "sEmptyTable": "表中无数据存在!",
123             "sInfo": "当前显示 _START_ 到 _END_ 条,共 _TOTAL_ 条记录",
124             "sInfoFiltered": "数据表中共为 _MAX_ 条记录",
125             "sInfoEmpty" : "显示0到0条记录",
126             "sSearch": "搜索",
127             "oPaginate": {
128                 "sFirst": "首页",
129                 "sPrevious": "上一页",
130                 "sNext": "下一页",
131                 "sLast": "末页"
132             }
133         } //多语言配置
134     }); 
135 });
136 </script>                                            
137 </body>
138 </html>    

  服务器端代码如下:

 1 /** 
 2      * 列表数据返回,jquery-data-table(此处采用springmvc实现)
 3      * @param iDisplayStart 忽略前面的记录数
 4      * @param iDisplayLength 页面大小
 5      * @param request
 6      * @return
 7      * @throws Exception
 8      */
 9 @RequestMapping("/data")
10     @ResponseBody
11     public Map<String, Object> jsonList(@RequestParam("iDisplayStart") int iDisplayStart,
12             @RequestParam("iDisplayLength") int iDisplayLength, HttpServletRequest request) throws Exception {
13         Map<String, Object> params = new HashMap<String, Object>();
14         params.setParameter("_currpage", iDisplayStart + 1);//转换成当前页号
15         params.setParameter("_pagesize", iDisplayLength);//页面大小
16         
17         //查询条件
18         params.setParameter("name", request.getParameter("name"));
19         params.setParameter("classId", request.getParameter("classId"));
20         params.setParameter("birthday", request.getParameter("birthday")); 
21         params.setParameter("city", request.getParameter("city")); 
22         
23         List datas = null;
24         int total = 0;
25         try {
26             total = this.getService().count(params);//总记录数
27             datas = this.getService().query(params);//当前页面记录
28         } catch (Exception e) {
29             LOGGER.error("jsonListAction异常", e);
30             Map<String, Object> rtn = new HashMap<String, Object>();
31             rtn.put("code", "0");
32             rtn.put("error", "查询参数异常:" + e.getMessage());
33             return rtn;
34         }
35         Map<String, Object> result = new HashMap<String, Object>();
36         result.put("iTotalDisplayRecords", total);
37         result.put("iTotalRecords", total); 
38         result.put("rows", datas);
39         return result;
40     }

  服务器端返回的json数据格式如下:

{"iTotalDisplayRecords":30, "iTotalRecords":30, "rows":[
{"id": "0001", "name" : "张三", "no" : "090001", "graduationDate" : "2012-07-01" , "gender" : "男", "city" : "北京" , "birthday" : "1992-07-28" , "classId" : "10001" },
{"id": "0001", "name" : "李四", "no" : "090002", "graduationDate" : "2012-07-01" , "gender" : "男", "city" : "上海" , "birthday" : "1992-07-28" , "classId" : "10001" },
{"id": "0001", "name" : "王二", "no" : "090003", "graduationDate" : "2012-07-01" , "gender" : "男", "city" : "杭州" , "birthday" : "1992-07-28" , "classId" : "10001" },
{"id": "0001", "name" : "赵六", "no" : "090004", "graduationDate" : "2012-07-01" , "gender" : "男", "city" : "深圳" , "birthday" : "1992-07-28" , "classId" : "10001" },
{"id": "0001", "name" : "张三2", "no" : "090005", "graduationDate" : "2012-07-01" , "gender" : "男", "city" : "深圳" , "birthday" : "1992-07-28" , "classId" : "10001" },
{"id": "0001", "name" : "张三3", "no" : "090006", "graduationDate" : "2012-07-01" , "gender" : "男", "city" : "深圳" , "birthday" : "1992-07-28" , "classId" : "10001" },
{"id": "0001", "name" : "张三4", "no" : "090007", "graduationDate" : "2012-07-01" , "gender" : "男", "city" : "深圳" , "birthday" : "1992-07-28" , "classId" : "10001" },
{"id": "0001", "name" : "张三5", "no" : "090008", "graduationDate" : "2012-07-01" , "gender" : "男", "city" : "深圳" , "birthday" : "1992-07-28" , "classId" : "10001" },
{"id": "0001", "name" : "张三6", "no" : "090009", "graduationDate" : "2012-07-01" , "gender" : "男", "city" : "深圳" , "birthday" : "1992-07-28" , "classId" : "10001" },
{"id": "0001", "name" : "张三7", "no" : "0900010", "graduationDate" : "2012-07-01" , "gender" : "男", "city" : "深圳" , "birthday" : "1992-07-28" , "classId" : "10001"},
{"id": "0001", "name" : "张三8", "no" : "090001", "graduationDate" : "2012-07-01" , "gender" : "男", "city" : "深圳" , "birthday" : "1992-07-28" , "classId" : "10001" }]}

posted on 2015-04-27 14:33  烟火_  阅读(2742)  评论(0编辑  收藏  举报

导航