灵感来自datatables官网
和http://blog.csdn.net/star535X/article/details/50060427 这个人写的很棒很全面
1 关于js
1 $(function() { 2 $("#aaa, #bbb, #ccc, #ddd").unbind("change").bind({//aaa bbb……分别是四个下拉框 选中时触发ajax 使用语句table.ajax.reload(); 3 change : function(){ 4 table.ajax.reload(); 5 } 6 }); 7 table=$('#list_tab').DataTable({ 8 "aLengthMenu": [[10, 15, 20], [10, 15, 20]],//搜索栏显示 9 "order": [[2, "desc"]],//第2列的数据倒序排序 此条会通过参数传给服务器 10 "processing": true,//代码没加载完成时 会显示加载中… 11 "searching": false,//关闭datatables自带搜索功能(没什么用) 12 "bPaginate": true, //翻页功能 13 "bLengthChange": true, //改变每页显示数据数量 14 "bFilter": true, //过滤功能 15 "bSort": true, //排序功能 16 "serverSide": true,//服务器端处理数据 17 "sPaginationType": "full_numbers", //翻页界面类型 18 //"sAjaxSource": "/orderCenter/dataTable", 19 //"fnServerData":retrieveData, //与后台交互获取数据的处理函数 20 "oLanguage": //DataTable中文化 把提示语之类的换成中文 21 { 22 "sProcessing": "正在加载中......", 23 "sLengthMenu": "每页显示 _MENU_ 条记录", 24 "sZeroRecords": "对不起,查询不到相关数据!", 25 "sEmptyTable": "表中无数据存在!", 26 "sInfo": "当前显示 _START_ 到 _END_ 条,共 _TOTAL_ 条记录", 27 "sInfoFiltered": "数据表中共为 _MAX_ 条记录", 28 "sSearch": "搜索", 29 "oPaginate": { 30 "sFirst": "首页", 31 "sPrevious": "上一页", 32 "sNext": "下一页", 33 "sLast": "末页" 34 } 35 }, 36 ajax: { 37 "type": "POST", 38 "url": '/orderCenter/dataTable', 39 "data": function (data) {//在此处对data(datatables传给服务器端的数据)进行处理 data.start是从哪个数据开始,data.length是页面长度 通过这两个参数可以分页 40 //currentPage pageSize 是我们项目需要的参数 为了改动不大在data中加了这两个参数 41 var order = data.order; 42 data.currentPage = data.start / data.length + 1; 43 data.pageSize = data.length; 44 data.orderColumn = data.order[0].column;//此处order[0].column是第几列要排序 45 data.orderDir = data.order[0].dir;//此处是asc desc 46 47 data.aaa= $("#aaa").val();//aaa bbb……可以在此处给data添加参数 这是自定义搜索栏传值的方式 48 data.bbb= $("#bbb").val(); 49 data.ccc= $("#ccc").val(); 50 data.ddd= $("#ddd").val(); 51 }, 52 }, 53 "bPaginate": true,// 分页按钮 54 "sPaginationType": "full_numbers",//用这个参数显示的页码工具比较全 除了"full_numbers"还有‘two_button’ 55 "columns": [ 56 {"data": null, "title": "第一列", 'sClass': "text-center", "orderable": false},//data 数据 如果复杂逻辑可以写在回调fnRowCallback中否则可以直接返回aoData的属性 57 {"data": "properties1.aaa", "title": "第二列", 'sClass': "text-center", "orderable": false},//'sClass': "text-center"居中 58 {"data": null, "title": "第三列", 'sClass': "text-center", "orderable": false},//"orderable": false是否可排序(true界面上会有排序按钮) 59 {"data": null, "title": "第四列", 'sClass': "text-center", "orderable": false}, 60 {"data": "properties2", "title": "第五列", 'sClass': "text-center", "orderable": false}, 61 ], 62 "fnRowCallback": function (nRow, aData) {//注意参数顺序不可变 63 $result = aData.properties1.aaa+ '<br/>' + aData.properties2;//在这写单元格里的html代码 64 $('td:eq(0)', nRow).html($result);//在这里分别给1 3 4列赋值 65 $('td:eq(2)', nRow).html($result); 66 $('td:eq(3)', nRow).html($result); 67 } 68 }); 69 });
2关于ajax传参
ajax返回的数据实体类按照这个格式就ok
1 private Long iTotalRecords;//实际的行数 2 private Long iTotalDisplayRecords;//过滤之后,实际的行数 3 private Integer draw;//datatables传过来的参数 原样返回 4 private List<T> aaData;//返回实体
想说的都写在注释里 不懂的可以参照 http://blog.csdn.net/star535X/article/details/50060427或者问我
么么哒晚安~!