| 一、常用屬性
 //把公共的設(shè)置項(xiàng)都放在這里,就不需要每個(gè)頁面都設(shè)置一遍了,放在jQuery對象上是為了避免污染全局變量window.dataTablesSettings = {
    processing : false,//是否顯示加載中提示
    bAutoWidth : false,//是否自動(dòng)計(jì)算表格各列寬度
    bPaginate : true,//是否顯示使用分頁
    bInfo : false,//是否顯示頁數(shù)信息
    sPaginationType : "full_numbers",//分頁樣式
    iDisplayLength : 10,//默認(rèn)每頁顯示多少條記錄
    searching : false,//是否顯示搜索框
    bSort : false,//是否允許排序
    serverSide : true,//是否從服務(wù)器獲取數(shù)據(jù)
    bStateSave : true,//頁面重載后保持當(dāng)前頁
    bLengthChange : false,//是否顯示每頁大小的下拉框
    sServerMethod : "POST",
    language: {
        lengthMenu : "每頁顯示 _MENU_記錄", 
        zeroRecords : "沒有匹配的數(shù)據(jù)", 
        info : "第_PAGE_頁/共 _PAGES_頁", 
        infoEmpty : "沒有符合條件的記錄", 
        search : "查找", 
        infoFiltered : "(從 _MAX_條記錄中過濾)", 
        paginate : { "first" : "首頁 ", "last" : "末頁", "next" : "下一頁", "previous" : "上一頁"}
    },
 //這里是為ajax添加自定義參數(shù),給它添加的屬性,它會(huì)傳給后臺(tái)
    fnServerParams : function (aoData) {
        aoData._rand = Math.random();
    }
};
 

 //引用了上面的js文件后,在這里設(shè)置其他的參數(shù)//ajax的url
 window.dataTablesSettings.ajax = "/backend/content/load";
 //如果表格的高度大于這個(gè)值,tbody就會(huì)出現(xiàn)滾動(dòng)條,而表頭固定window.dataTablesSettings.sScrollY = $(window).height() - 300;//是否開啟垂直滾動(dòng)(否=disabled)
 //設(shè)置具體的列名window.dataTablesSettings.columns = [
    {data : "id"},
    {data : "title"}, 
    {data : "sort"}, 
    {data : "diffcity"}, 
    {data : "citys"},
    {data : "edittime"},
    {data : "editer"}
];
 //對列進(jìn)行操作,這里只是替換掉第一列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> "  + 
               "<a title='復(fù)制' class='glyphicon glyphicon-duplicate nounderline' href='javascript:copyTabRow(" + data + ");'></a> " +
               "<a title='刪除' class='glyphicon glyphicon-trash nounderline' href='javascript:deleteTabRow(" + data + ");'></a>";
    }
}];
 
二、事件
 window.dataTablesSettings.fnDrawCallback = function(data){    //每一次表格繪制完成時(shí)調(diào)用};
window.dataTablesSettings.fnInitComplete = function(){    //表格初始化時(shí)調(diào)用一次};//還有其他不常用的,就不列舉了

三、方法//重繪方法。true會(huì)回到表格的初始狀態(tài),例如回到第一頁,false只是重新加載當(dāng)前頁dataTable.fnDraw(false);//銷毀方法。true會(huì)刪除表格元素,而false不會(huì),它只是銷毀dataTable對象dataTable.fnDestroy(false);//換頁方法,可以跳轉(zhuǎn)到指定頁??蛇x參數(shù)有"first", "previous", "next" , "last",或者是一個(gè)整數(shù),0是第一頁dataTable.fnPageChange(0);四、搜索案例
 //這里是搜索的案例,不過自定義分頁也可以這么做$("#searchBtn").on("click", function(){
 //這里是為了解決搜索條件變化后,沒有點(diǎn)搜索按鈕,而是點(diǎn)換頁后搜索條件也變化的bug
    var stitle = $("#stitle").val();    var sdiffcity = $("#sdiffcity").val();    var scity = $("#scity").val();
 //這里重新設(shè)置參數(shù)
 window.dataTablesSettings.fnServerParams = function (aoData) {
        aoData.stitle = stitle;
        aoData.sdiffcity = sdiffcity;
        aoData.scity = scity;
        aoData._rand = Math.random();
    }    //搜索就是設(shè)置參數(shù),然后銷毀datatable重新再建一個(gè)
    dataTable.fnDestroy(false);
    dataTable = $("#datatable").dataTable(window.dataTablesSettings);
 //搜索后跳轉(zhuǎn)到第一頁
    dataTable.fnPageChange(0);
});
 
五、注意事項(xiàng)
 //當(dāng)window尺寸改變時(shí)觸發(fā),以解決dataTable表頭不自動(dòng)適應(yīng)的問題//resize和scroll事件一定要優(yōu)化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方法里需要這么寫,如果當(dāng)前頁只有一條數(shù)據(jù),刪除后跳轉(zhuǎn)到前一頁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);
    }
}
 
 |