【前端】jQuery DataTables 使用手冊(精簡版)

轉載請註明出處:http://www.cnblogs.com/shamoyuu/p/5182940.htmljavascript

前排提醒,這個插件能不用就不用,那麼多好的插件等着你,爲何要用它呢?就算用easyui的datagrid而後本身改樣式都比這強得多。css

在引入easyui的css後,引入下面的css,就能夠把easyui的datagrid變成bootstrap的風格了。html

/*=================== easyui datagrid begin =======================*/
.datagrid-row:nth-child(odd){
    background: #F0F0F0;
}
.datagrid-header td, .datagrid-body td, .datagrid-footer td{
    border-style: solid;
}
.datagrid-row, .datagrid-header-row{
    height : 40px;
}
.datagrid-header, .datagrid-td-rownumber{
    background: #FFF;
}
.datagrid-row-over, .datagrid-header td.datagrid-header-over, .datagrid-row-over .rowbtn{
    background: #3598DC !important;
    color: #FFF;
}
.datagrid-view1 .datagrid-header-row td, .datagrid-view1 .datagrid-body{
    border-left: 1px solid #CCC;
}
.datagrid-header, .datagrid-toolbar, .datagrid-pager, .datagrid-footer-inner{
    border-color: #CCC;
}
.datagrid .datagrid-pager, .datagrid-header{
    border: none;
}
.pagination-info {
    margin: 0 10px 0 0;
}
.datagrid-header-row td{
    border-top: 1px solid #CCC;
}
.datagrid-pager{
    border: 1px solid #CCC !important;
    margin: 0 18px 0 0 !important;
}
.datagrid-view2 .datagrid-body{
    border-right: 1px solid #CCC;
}
.pagination{
    border-radius: 0;
}
.datagrid-view2 .datagrid-header-row td{
    cursor: pointer;
}
/*=================== easyui datagrid end =======================*/

 

//須要把這個回調函數放在datagrid的初始化方法裏
onLoadSuccess : function(){
  //解決一個樣式bug
  $(".borderdiv").remove();
  var height = $(".datagrid-view2 .datagrid-body").outerHeight() - $(".datagrid-view2 .datagrid-btable").outerHeight();
  if(height > 0){
    $(".datagrid-view2 .datagrid-body").css("position", "relative").append("<div class='borderdiv'></div>");
    $(".borderdiv").css({
      height : height,
      borderLeft : "1px solid #ccc",
      position : "absolute",
      right : "18px"
    });
  }
}

這是效果,仍是很好看的。java

 

 

若是你執意要用,或者項目裏已經用這個沒辦法變了,那就看看下面的內容吧。ajax

 

1、經常使用屬性

//把公共的設置項都放在這裏,就不須要每一個頁面都設置一遍了,放在jQuery對象上是爲了不污染全局變量
window.dataTablesSettings = { processing : false,//是否顯示加載中提示 bAutoWidth : false,//是否自動計算表格各列寬度 bPaginate : true,//是否顯示使用分頁 bInfo : false,//是否顯示頁數信息 sPaginationType : "full_numbers",//分頁樣式 iDisplayLength : 10,//默認每頁顯示多少條記錄 searching : false,//是否顯示搜索框 bSort : false,//是否容許排序 serverSide : true,//是否從服務器獲取數據 bStateSave : true,//頁面重載後保持當前頁 bLengthChange : false,//是否顯示每頁大小的下拉框 sServerMethod : "POST", language: { lengthMenu : "每頁顯示 _MENU_記錄", zeroRecords : "沒有匹配的數據", info : "第_PAGE_頁/共 _PAGES_頁", infoEmpty : "沒有符合條件的記錄", search : "查找", infoFiltered : "(從 _MAX_條記錄中過濾)", paginate : { "first" : "首頁 ", "last" : "末頁", "next" : "下一頁", "previous" : "上一頁"} },
//這裏是爲ajax添加自定義參數,給它添加的屬性,它會傳給後臺 fnServerParams :
function (aoData) { aoData._rand = Math.random(); } };
//引用了上面的js文件後,在這裏設置其餘的參數
//ajax的url
window.dataTablesSettings.ajax = "/backend/content/load";
//若是表格的高度大於這個值,tbody就會出現滾動條,而表頭固定 window.dataTablesSettings.sScrollY
= $(window).height() - 300;//是否開啓垂直滾動(否=disabled)
//設置具體的列名 window.dataTablesSettings.columns = [ {data : "id"}, {data : "title"}, {data : "sort"}, {data : "diffcity"}, {data : "citys"}, {data : "edittime"}, {data : "editer"} ];
//對列進行操做,這裏只是替換掉第一列 window.dataTablesSettings.columnDefs
= [{ targets : [0], data : "id", render : function(data, type, row) { return "<a title='編輯' class='glyphicon glyphicon-edit nounderline' href='javascript:editTabRow(" + data + ");'></a>&nbsp;" + "<a title='複製' class='glyphicon glyphicon-duplicate nounderline' href='javascript:copyTabRow(" + data + ");'></a>&nbsp;" + "<a title='刪除' class='glyphicon glyphicon-trash nounderline' href='javascript:deleteTabRow(" + data + ");'></a>"; } }];

 

2、事件

window.dataTablesSettings.fnDrawCallback = function(data){
    //每一次表格繪製完成時調用
};
window.dataTablesSettings.fnInitComplete = function(){
    //表格初始化時調用一次
};
//還有其餘不經常使用的,就不列舉了

 

3、方法

//重繪方法。true會回到表格的初始狀態,例如回到第一頁,false只是從新加載當前頁
dataTable.fnDraw(false);
//銷燬方法。true會刪除表格元素,而false不會,它只是銷燬dataTable對象
dataTable.fnDestroy(false);
//換頁方法,能夠跳轉到指定頁。可選參數有"first", "previous", "next" , "last",或者是一個整數,0是第一頁
dataTable.fnPageChange(0);

 

4、搜索案例

//這裏是搜索的案例,不過自定義分頁也能夠這麼作
$("#searchBtn").on("click", function(){
//這裏是爲了解決搜索條件變化後,沒有點搜索按鈕,而是點換頁後搜索條件也變化的bug var stitle = $("#stitle").val(); var sdiffcity = $("#sdiffcity").val(); var scity = $("#scity").val();
//這裏從新設置參數
window.dataTablesSettings.fnServerParams
= function (aoData) { aoData.stitle = stitle; aoData.sdiffcity = sdiffcity; aoData.scity = scity; aoData._rand = Math.random(); } //搜索就是設置參數,而後銷燬datatable從新再建一個 dataTable.fnDestroy(false); dataTable = $("#datatable").dataTable(window.dataTablesSettings);
//搜索後跳轉到第一頁 dataTable.fnPageChange(
0); });

5、注意事項

//當window尺寸改變時觸發,以解決dataTable表頭不自動適應的問題
//resize和scroll事件必定要優化
window.resizeWaiter = false;
$(window).resize(function() {
    if(!window.resizeWaiter){
        window.resizeWaiter = true;
        setTimeout(function(){
            window.dataTable && window.dataTable.fnDraw(false);
            window.resizeWaiter = false;
        }, 500);
    }
});
//在刪除的ajax的success方法裏須要這麼寫,若是當前頁只有一條數據,刪除後跳轉到前一頁
start = $("#datatable").dataTable().fnSettings()._iDisplayStart; total = $("#datatable").dataTable().fnSettings().fnRecordsDisplay(); dataTable.fnDraw(false); if ((total - start) == 1) { if (start > 0) { $("#datatable").dataTable().fnPageChange("previous", true); } }
相關文章
相關標籤/搜索