2014-03-26 95 views
1

我是jquery和javascript的新手。目前Iam使用jQuery數據表,並且需要動態地將複選框列添加到我的數據表中。我在瀏覽時發現這個鏈接很有用。但是,下面這個線程中給出的解決方案在最後添加了附加列。但我需要複選框列作爲我的第一列。請參閱下面的鏈接,其中包含我正在使用的最後一個hack,目前在數組中添加「」ao每行。jquery datatables添加額外的列

Link to related query

請建議我一個更好的解決方案,以解決我的問題。我不希望服務器在響應中發送額外的列。

回答

3

我假設你使用sAjaxSource從服務器獲取數據。如果你不想發送額外的列,你可以手動移動你的數據一列,但你仍然必須在你的html表中有一個額外的列。事情是這樣的:

比方說,你有一個JSON格式類似如下:

{ 
    "aaData": 
    [ 
     [ 
      "1", 
      "Alice" 
     ], 
     [ 
      "2", 
      "Bob" 
     ] 
    ] 
} 

和你有一個表,3行,第一個爲複選框保留:

<table> 
    <thead> 
     <tr> 
      <th>Checkbox</th> 
      <th>Id</th> 
      <th>Name</th> 
     </tr> 
    </thead> 
</table> 

然後,在創建數據表時,在您的aoColumns中,您必須手動調整每個數據段的位置。默認情況下,數據表只是經過數組索引,從0開始,並將其分配給相應的列,所以讓我們重新分配:

"aoColumns": [ 
     { "mData": null, 
      "mRender": function(){ 
      return '<input type="checkbox"/>'; 
      } 
     }, 
     { "mData": 0 }, 
     { "mData": 1 } 
    ] 

發送一個空的記錄,以填補行只是讓你避免手動分配mData

+0

我跟着您的代碼段,但我得到了如下錯誤我的控制檯上: 語法錯誤:無效的屬性ID: {「MDATA」:0}, 請幫我在哪裏,我錯了。 – Pradeep

+0

'mRender'部分後我忘記了大括號。固定。 –