靈感來自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或者問我
么么噠晚安~!