2017-03-29 35 views
0

我有一些jQuery發佈一些數據,獲取列表作爲JSON響應返回列表並基於列表數據構建數據表。一切正常,但我有一個看似簡單的問題: 我無法獲得我的表聲明中的列寬來堅持。無法在動態生成的表上設置DataTables列寬

我的代碼看起來是這樣的:

//some magic happens and I get a result like this 
json_result = ['eggs', 'bananas', 'purple'] 

//declare the table 
var result_table = $(table_selector) 
table = result_table.DataTable({ 
       //set two different width columns 
       columnDefs: [ 
        { "width": "10%", "targets": 0 }, 
        { "width": "90%", "targets": 1 } 
        ] 
      }); 

//build the table rows based on result 
for (i=0, i<json_result.length, i++){ 
    var new_row = '<tr><td><input type="checkbox"></td><td>' +json_result[i] + '</td></tr>' 
    table.row.add(new_row).draw(); 
    } 

// table.columns.adjust().draw(); <-- tried this to no avail 
table.draw(); 

其結果是,在它的容器非常適合一個非常好的表... ...但列寬分裂50/50。這些相同的列defs似乎在我的應用程序中的其他表上工作正常。我覺得我錯過了簡單的事情!

+1

你試過嗎? https://datatables.net/forums/discussion/comment/4374/#Comment_4374 – Forty3

+0

哇,這完全奏效。我錯誤地認爲這與表格的整體大小有關,而不是實際的內部寬度。謝謝!! – rob

+0

很高興工作。我爲那些可能關注你而不閱讀評論的人添加了一個答案。請享用! – Forty3

回答

2

從論壇主題在這裏datatables.net,禁止通過 「自動寬度」 的功能:

$(document).ready(function() { 
    $('#example').dataTable({ 
    "bAutoWidth": false 
    }); 
}); 

參考:legacy.datatables.net