2016-01-22 94 views
0

我爲我的項目使用了Jquery Datatable。它在頁面加載時運行良好。在下拉列表中調用jquery Datatable

我有一個場景,我不得不調用下拉change.Data數據表我經歷了十幾個網站,但沒有得到所需的解決方案。

Intializing的數據表

$(function(){ 

    //Datatable function 
    var url = $(".dTable").data("url"); 
    var currFinYear = $("#ddlFinYearList").val(); 

    table = $(".dTable").dataTable({ 
     "bProcessing": true,//to show processing word 
     "autoWidth": false,//to adjust width 

     "aaSorting": [[8, 'desc']], 
     "ajax": { 
      "url": url, 
      "method": "GET", 
      "dataType": "json", 
      "data": { 
       finYear: currFinYear 
      } 
     }, 

     columns: [ 
      ... 
      ... 
     ], 

     //Defining checkbox in columns 
     "aoColumnDefs": [ 
      ... 
     ], 

     "fnRowCallback": function (nRow, aData, iDisplayIndex) { 
      ... 
     }, 

     "fnDrawCallback": function() { 
      ... 
     } 

    }); 

}); 

調用上下拉變化的DataTable代碼

$(document).on("change", "#ddlFinYearList", function() { 

     $('.dTable').dataTable().fnDraw(); 
     ///How can I call the datatable here 

}); 

回答

0

你需要指定一個功能ajax.data選項,這樣它會被稱爲每次表被重新繪製。在該功能中,您必須獲取下拉控件的值並將其分配給請求對象d的屬性finYear

"ajax": { 
    "url": url, 
    "method": "GET", 
    "dataType": "json", 
    "data": function(d){ 
     d.finYear = $("#ddlFinYearList").val(); 
    } 
}, 

然後,你需要在每次重繪表下拉控制值的變化。

$("#ddlFinYearList").on("change", function() { 
    $('.dTable').DataTable().ajax.reload(); 
}); 

查看this jsFiddle進行論證。

+0

Thanks for the reply.I嘗試了上面的代碼在下拉式變化,但它不工作,我做了什麼來解決這個問題是''數據表達式代碼'包裹在一個函數內,並在'fnDestroy() ;' – ksg