jquery datatable真实示例

  1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

  2 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

  3 <html>

  4 <head>

  5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

  6 <title>datatable服务端示例页面</title>

  7 <link rel="stylesheet" type="text/css" media="screen" href="lib/datatable/media/css/jquery.dataTables.css">

  8 <%@ include file="common/commonHeader.jsp"%> 

  9 <script type="text/javascript" src="lib/datatable/media/js/jquery.js"></script>

 10 <script type="text/javascript" src="lib/datatable/media/js/jquery.dataTables.js"></script>

 11 <style type="text/css">

 12     .toolbar {

 13         float: left;

 14     }

 15     .dtselected{

 16         background-image:url('lib/datatable/media/images/dtSelected.png');

 17         background-repeat:repeat-x;

 18     }

 19 

 20 <input type="checkbox" class="checkbox"

 21 </style>

 22 <script type="text/javascript">

 23 

 24     /*JS生成table*/

 25     var dataSet = [['张三','','研发二部','13768451236','<a>删除</a>'],['李四','','研发二部','15826457981','<a>删除</a>']];

 26     $(document).ready(function() {

 27              $('#jsGenerate').html( '<table cellpadding="0" cellspacing="0" border="0" class="display" id="jsTable"></table>' );

 28             $('#jsTable').dataTable( {

 29                 "data": dataSet,//数据集

 30                 "columns": [

 31                     { "title": "姓名" },

 32                     { "title": "性别" },

 33                     { "title": "部门" },

 34                     { "title": "联系方式", "class": "center" },

 35                     { "title": "操作", "class": "center" }

 36                 ],

 37                 "searching": false,//是否展示搜索器

 38                 "info": true,//分页提示信息展示

 39                 "pagingType": "full_numbers"//分页样式

 40             } );  

 41     } );

 42     

 43     

 44     /*服务端请求数据生成table*/

 45     geneServerTable();

 46     function geneServerTable(){

 47         var selected = [];

 48         var t = $('#serverDataTable').dataTable( {

 49             "stateSave": true,//保存状态到cookie ******很重要 , 当搜索的时候页面一刷新会导致搜索的消失。

 50             "paging": true,//是否启用分页

 51             "ordering": true,//是否启用排序

 52             "searching": true,//是否展示搜索器

 53             "info": true,//是否展示分页提示信息

 54             "order": [[ 3, "desc" ]],//默认排序规则

 55             "pagingType": "full_numbers",//分页样式

 56             "autoWidth": false,//列的宽度会根据table的宽度自适应

 57             "processing": true,//是否显示正在处理的提示

 58             "serverSide": true,//是否启用服务器端异步请求

 59             "ajax": "getTableData.do",//请求

 60             "dom": '<"toolbar">frtilp',//工具条和布局

 61             "language": {//汉化

 62                 "url":"lib/datatable/i18n.txt"

 63             },

 64             "columns": [//展示列

 65                         { "data":null},

 66                         { "data": "name","width":"20%"},

 67                         { "data": "gender"},

 68                         { "data":null}

 69                     ],

 70             "columnDefs": [ //列属性定义

 71                             {

 72                                 "render": function ( data, type, row ) {

 73                                     return '<a href="javascript:void(0);" onclick="deleteRow(' + row.id + ');">删除</a> <a href="javascript:void(0);" onclick="modifyRow(' + row.id + ');">修改</a>';

 74                                 },

 75                                 "targets": 3

 76                             },

 77                               {

 78                               "visible": true,//列是否可见

 79                               "searchable": false,

 80                               "targets": 1

 81                               },

 82                               {

 83                                   "render": function ( data, type, row ) {

 84                                       return '&nbsp;&nbsp;<input type="checkbox" value="' + data.id + '" title="' + data.id + '" name="ck"/>';

 85                                   },

 86                                   "targets": 0

 87                               }

 88                       ],

 89             "initComplete": function(settings, json) {//回调函数,原因:异步请求

 90                 addEvent();//事件

 91             }

 92         } );

 93     }

 94     

 95     /*事件*/

 96     function addEvent(){

 97         /*工具条*/

 98         $("div.toolbar").append('<input id="addRow" type="button" class="btn btn-primary btn-sm" onclick="alert(111);" value="新增"/>');

 99         $("div.toolbar").append('&nbsp;&nbsp;<input id="getSelected" type="button" class="btn btn-primary btn-sm" onclick="getSelected();" value="获取选中"/>');

100         

101         /*双击事件*/

102         $('#serverDataTable tbody').on('dblclick', 'tr', function () {

103             var name = $('td', this).eq(1).text();

104             alert( '点击了 \'' + name + '\' 行' );

105         });

106         

107         /*单击事件*/

108         $('#serverDataTable tbody').on('click', 'tr', function () {

109             //$(this).children().toggleClass("dtselected");

110             var checkObj = $(this).children().first().children();

111             if (checkObj.attr("checked") == true || checkObj.attr("checked") == "checked") {

112                 checkObj.attr("checked", false);

113                 checkObj.removeAttr("checked");

114             } else {

115                 checkObj.attr("checked", true);

116             }

117         });

118     }

119     

120     /*获取选中*/

121     function getSelected(){

122         var spCodesTemp = "";

123         $('#serverDataTable tbody input:checkbox[name=ck]:checked').each(function(i){

124               if(0==i){

125                 spCodesTemp = $(this).val();

126               }else{

127                    spCodesTemp += (","+$(this).val());

128              }

129         });

130         alert("选中行的ID是:" + spCodesTemp);

131     }

132     

133     /*删除事件*/

134     function deleteRow(id){

135         alert("本行数据的ID是:" + id);

136     }

137     

138     /*修改事件*/

139     function modifyRow(id){

140         alert("本行数据的ID是:" + id);

141     }

142 </script>

143 </head>

144 <body>

145     <!--  <b>示例一:根据js对象生成table</b>

146     <div id="jsGenerate" style="margin-top:20px"></div>-->

147     <br>

148     <br>

149     <!--  <b>示例二:从服务端请求数据生成table</b>-->

150     <!-- table table-striped table-bordered table-hover dataTable -->

151     <table id="serverDataTable" class="table-striped table-bordered table-hover" style="margin-top:20px;" cellspacing="0" width="100%">

152         <thead>

153             <tr>

154                 <th width="16px;"></th>

155                 <th>姓名</th>

156                 <th>性别</th>

157                 <th>操作</th>

158             </tr>

159         </thead>

160     </table>

161     

162 </body>

163 </html>
@RequestMapping("getTableData")

    public ModelAndView getTableData(HttpServletRequest request, HttpServletResponse response) throws Exception {

		//1.分页参数

		int pageSize = 10;//页面显示数量

		int startRecord = 0;//开始记录位置 

		String size = request.getParameter("length");

		if (!"".equals(size) && size != null) {

		    pageSize = Integer.parseInt(size);

		}

		String currentRecord = request.getParameter("start");

		if (!"".equals(currentRecord) && currentRecord != null) {

		    startRecord = Integer.parseInt(currentRecord);

		}



		//2.排序参数

		String sortColumn = request.getParameter("order[0][column]");//因为是二维的表格,因此只有一维需要排序,所以 order 的下标未 0. 该属性表示第几列需要排序。 

		String sortDir = request.getParameter("order[0][dir]");//排序方式 ASC | DESC 

		

		//3.搜索参数

		String searchValue = request.getParameter("search[value]");//search 输入框中的值

		

		System.out.println("----->sortColumn:" + sortColumn + "------>sortDir:" + sortDir + "---->searchValue:" + searchValue);

		

		//所有参数

//		Enumeration<String> paraNames = request.getParameterNames();

//		for(Enumeration e=paraNames;e.hasMoreElements();){

//		       String thisName=e.nextElement().toString();

//		       String thisValue=request.getParameter(thisName);

//		       System.out.println(thisName + "--------------> " + thisValue);

//		}

		

		//JSONArray userData = userService.pageGetUserData(startRecord,pageSize,columnsName[Integer.parseInt(sortColumn)], sortDir, searchValue);

		

		//4.获取后台数据

		JSONArray arr = new JSONArray();

		int count = 15;

		//假分页数据

		for (int i = 0; i < 15; i++) {

			if (startRecord < 10 && i < 10){//第一页

				JSONObject obj = new JSONObject();

				obj.put("id", i);

				obj.put("name", "张三" + i);

				obj.put("gender", "男");

				arr.add(obj);

			}

			if(startRecord >= 10 && i >= 10){//第二页

				JSONObject obj = new JSONObject();

				obj.put("id", i);

				obj.put("name", "张三" + i);

				obj.put("gender", "男");

				arr.add(obj);

			}

		}

		

		//5.封装要返回的数据

		DataVO<Object> result = new DataVO<Object>();

		result.setDraw(Integer.parseInt(request.getParameter("draw") == null ? "0" : request.getParameter("draw")) + 1);//表示请求次数 

		result.setData(arr);//具体的数据对象数组 

		result.setRecordsTotal(count);//总记录数

		result.setRecordsFiltered(count);//过滤后的总记录数

		

		PrintWriter out = response.getWriter();

		out.print(JSON.toJSONString(result));

	    return null;

	}

 

i18n.txt

{

    "search": "搜索:",

    "processing": "正在加载数据...",

    "lengthMenu": "每页显示  _MENU_ 条记录",

    "zeroRecords": "对不起,查询不到相关数据!",

    "info": "当前显示 _START_ 到 _END_ 条,共 _TOTAL_ 条记录",

    "infoEmpty": "表中无数据存在!",

    "infoFiltered": "数据表中共为 _MAX_ 条记录",

    "paginate": {

         "sFirst": "首页",

         "sPrevious": "上一页",

         "sNext": "下一页",

         "sLast": "尾页"

     }

}

 

你可能感兴趣的:(Datatable)