前端代碼,php的有空再整理完髮出來
研究了2天弄出來,苦逼
<div class="row">
<div class="col-xs-12">
<div class="table-responsive">
<table id="sample-table-2" class="table table-striped table-bordered table-hover">
<label>
<input type="text" class="form-control fuzzy-search" placeholder="搜索">
</label>
<button type="submit" class="dataTable-sub">搜索</button>
<thead>
<tr>
<th class="center">
<label>
<input type="checkbox" class="ace" />
<span class="lbl"></span>
</label>
</th>
<th>路由</th>
<th>在線人數</th>
<th>訂單</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
//提示信息
var lang = {
"sProcessing": "搜索中...",
"sLengthMenu": "每頁 _MENU_ 項",
"sZeroRecords": "沒有匹配結果",
"sInfo": "當前顯示第 _START_ 至 _END_ 項,共 _TOTAL_ 項。",
"sInfoEmpty": "當前顯示第 0 至 0 項,共 0 項",
"sInfoFiltered": "(由 _MAX_ 項結果過濾)",
"sInfoPostFix": "",
"sSearch": "搜索:",
"sUrl": "",
"sEmptyTable": "沒有數據",
"sLoadingRecords": "載入中...",
"sInfoThousands": ",",
"oPaginate": {
"sFirst": "首頁",
"sPrevious": "上頁",
"sNext": "下頁",
"sLast": "末頁",
"sJump": "跳轉"
},
"oAria": {
"sSortAscending": ": 以升序排列此列",
"sSortDescending": ": 以降序排列此列"
}
};
//初始化表格
var table = $("#sample-table-2").dataTable({
language:lang, //提示信息
autoWidth: false, //禁用自動調整列寬
//stripeClasses: ["odd", "even"], //爲奇偶行加上樣式,兼容不支持CSS僞類的場合
processing: true, //隱藏加載提示,自行處理
serverSide: true, //啓用服務器端分頁
searching: false, //禁用原生搜索
orderMulti: false, //啓用多列排序
//order: [], //取消默認排序查詢,否則複選框一列會出現小箭頭
renderer: "bootstrap", //渲染樣式:Bootstrap和jquery-ui
pagingType: "simple_numbers", //分頁樣式:simple,simple_numbers,full,full_numbers
columnDefs: [
{ "orderable": false, "targets": [ 0,3] }
],
order: [
[ 2, 'desc' ]
],
//option顯示數量
"aLengthMenu": [[20, 50, 100, 500, -1], [20, 50, 100, 500, "所有"]],
"iDisplayLength": 20, //默認顯示20條
/*columnDefs: [{
"targets": 'nosort', //列的樣式名
"orderable": false //包含上樣式名‘nosort’的禁止排序
}],*/
ajax: function (data, callback, settings) {
//封裝請求參數
var param = userManage.getQueryCondition(data);
/*param.limit = data.length;//頁面顯示記錄條數,在頁面顯示每頁顯示多少項的時候
param.start = data.start;//開始的記錄序號
param.page = (data.start / data.length)+1;//當前頁碼*/
console.log(param);
//ajax請求數據
$.ajax({
type: "GET",
url: "{:U('ApMain/getData')}",
cache: false, //禁用緩存
data: param, //傳入組裝的參數
dataType: "json",
success: function (result) {
console.log(result);
//setTimeout僅爲測試延遲效果
setTimeout(function () {
//封裝返回數據
var returnData = {};
returnData.draw = data.draw;//這裏直接自行返回了draw計數器,應該由後臺返回
returnData.recordsTotal = result.total;//返回數據全部記錄
returnData.recordsFiltered = result.total;//後臺不實現過濾功能,每次查詢均視作全部結果
returnData.data = result.data;//返回的數據列表
console.log(returnData);
//調用DataTables提供的callback方法,代表數據已封裝完成並傳回DataTables進行渲染
//此時的數據需確保正確無誤,異常判斷應在執行此回調前自行處理完畢
callback(returnData);
}, 200);
}
});
},
//列表表頭字段
columns: [{
"data": "id" ,
render: function(data, type, full){
return "<label><input type='checkbox' class='ace' box='checkbox' value='"+full.id+"' /><span class='lbl'></span></label>";
}
},{
"data": "gw_id",
render: function(data, type, full){
var str = "{:U('ApMain/detail', array('id'=>'full_id'))}";
var url = str.replace('full_id', full.id);
var gw = full.gw_id;
if(full.comment) {
return "<a href="+url+">"+gw.substr(-6, 6)+"("+full.comment+")</a>";
} else{
return "<a href="+url+">"+gw.substr(-6, 6)+"</a>";
}
}
},
{ "data": "onuser" },
{ "data": "gw_id" ,
render: function(data, type, full){
var str,url,full_gw;
str = "{:U('控制器/模板', array('gw'=>'full_gw'))}";
url = str.replace('full_gw', full.gw_id);
return "<a href="+url+">查看</a>";
}
}
]
}).api();
//此處需調用api()方法,否則返回的是JQuery對象而不是DataTables的API對象
//點擊搜索
$('.dataTable-sub').click(function(){
table.draw();
});
$('table th input:checkbox').on('click' , function(){
var that = this;
$(this).closest('table').find('tr > td:first-child input:checkbox')
.each(function(){
this.checked = that.checked;
$(this).closest('tr').toggleClass('selected');
});
});
});
//參數處理
var userManage = {
currentItem : null,
getQueryCondition : function(data) {
var param = {};
//組裝排序參數
if (data.order&&data.order.length&&data.order[0]) {
switch (data.order[0].column) {
case 1:
param.order = "comment";
break;
case 2:
param.order = "onuser";
break;
default:
param.order = "onuser";
break;
}
param.sort = data.order[0].dir;
}
//查詢參數
param.fuzzy = $(".fuzzy-search").val();
//組裝分頁參數
param.start = data.start;
param.length = data.length;
return param;
}
}
</script>