2011-10-19 34 views
8

我在一個頁面上使用dataTables有幾個表。每個人都需要擁有自己的'AjaxSource'。我似乎無法弄清楚如何做到這一點。這裏是我擁有的最小代碼:多個數據表在同一頁上使用不同的AJAX源

  var oTable = $('.datatable').dataTable({ 
             "bProcessing": true, 
             "sAjaxSource": "/ajax/function", 
       "bSort": false, 
       "fnDrawCallback": function() { 
         //some click events initilized here 
       } 
         }); 

這基本上是裸露的骨骼設置。每個表作爲數據表類和一個唯一的ID。但不知道如何根據特定的表格來更改AjaxSource。

謝謝!

編輯:

這裏是我落得這樣做:

 $('.datatable').each(function(index){ 

       $('#'+$(this).attr('id')).dataTable({ 
             "bProcessing": true, 
       "sAjaxSource": $(this).children('caption').html(), 
       "bSort": false, 
       "fnDrawCallback": function() { 
       } 
         }); 
     }); 

表裏面我把由CSS隱藏和包含阿賈克斯源URL的標題標籤。它遍歷每個實例並抓取url。

這似乎工作到目前爲止!

回答

5

這不行嗎?它使用id而不是類來唯一標識每個數據表,並根據id將每個表的獨立源附加到該表中。

var oTable = $('#FirstDataTableID').dataTable({ 
      "bProcessing": true, 
      "sAjaxSource": "/ajax/function", 
      "bSort": false, 
      "fnDrawCallback": function() { 
        //some click events initilized here 
      } 
     }); 

    var oTable = $('#SecondDataTableID').dataTable({ 
      "bProcessing": true, 
      "sAjaxSource": "/ajax/other_function", 
      "bSort": false, 
      "fnDrawCallback": function() { 
        //some click events initilized here 
      } 
     }); 
+0

是的,可能,但我不想爲每一個使用全新的初始化,會很快變得非常凌亂。 – dzm

+2

那麼,對每個數據表單單獨進行初始化並不需要爲每個數據表單單獨進行初始化,這就是你所要求的。您可以嘗試根據類來進行一次公共初始化,然後單獨進行較小的初始化,只指定源屬性,這將允許不重複公共代碼。 –

+0

我剛剛更新了我的文章,似乎正在工作的解決方案,您怎麼看?看到任何問題? – dzm

0

您需要選擇每個表格並將相應的Ajax數據源應用於其中,以便獲取所需內容。現在你是基於類的名字中選擇:

​​

可能需要轉換爲:

$("#dataTable1") 

我想這會得到乏味,如果你有很多的表,但它很漂亮你可以做你想要做的事情的唯一方法。

4

我有同樣的問題,這是我使用HTML5類似你們DATA-屬性和初始化代碼解決:

$('.dataTableServer').each(function() { 
     var source = $(this).attr("data-source"); 
     $(this).dataTable({ 
      "sPaginationType": "full_numbers", 
      "bProcessing": true, 
      "bServerSide": true, 
      "sAjaxSource": source 
     }); 
    }); 

這樣你就不必爲每個DataTable

0
創建一個id

您可以在同一頁面上使用兩個或更多。我已經做到了,數據表很好地工作。 數據表在本地存儲數據,即使記錄是異步刪除的。因此,當我們搜索刪除的記錄時,我們需要始終明確地顯示正確的結果。 由於數據表只需要初始化一次,我們需要記住,對於同一頁上的每個數據表,我們必須繼續初始化數據表,因爲它們存儲本地記錄,因爲我們不需要這些記錄,因爲在同一頁上,我們存儲/顯示不同的數據。

所以。我們必須使用內聚的方法

$("#Id_of_Current_DTBL").DataTable().destroy(); 
$("#Id_of_Other1_DTBL").DataTable().clear(); 
$("#Id_of_Other2_DTBL").DataTable().clear(); 

這將解決問題。

相關問題