2016-01-05 85 views
2

我想添加一個額外的<thead>,它將包含我的數據表中該列的過濾器。DataTables 1.10列數

我可以使用下面的腳本來做到這一點。 (對於這個工作,我應該在DOM定義已經THEAD)

var tableid = $('#dataTableBuilder'); 
num_columns = tableid.find('thead > tr:first > th').length; 
tableid.find('thead > tr:first').before('<tr id="filter-row"></tr>'); 
var filterrow = tableid.find('#filter-row'); 

while (num_columns-- > 0) filterrow.append('<th></th>'); 

問題是我不希望看到DOM找出列數增加一顆顆<th>。 (原因是我使用Yajra Datatables HtmlBuilder來生成我的表,我不知道列的數量和這個添加的表代碼只是<table id='xxxxxx'></table>

我希望這個問題被理解,我只需要知道如何獲得使用數據表的列數。

我試過myDataTable.fnSettings().aoColumns.length,但它說「fnSettings不是函數」,它看起來像在1.10中被刪除了,有沒有其他選擇呢?

回答

2

使用1.10.x API有多種獲取列數的方法。例子:

var colCount = table.columns().header().length; 
var colCount = table.row(0).data().length; 
var colCount = table.columns()[0].length; 
... 

關於myDataTable.fnSettings().aoColumns.length我相信你所想的

table.init().columns/table.init().aoColumns

table.init()只能容納你實際上已經傳遞給數據表初始化選項。如果你有一個數據表初始化這樣

var table = $("#example").DataTable({ 
    columnDefs : [ 
    { targets : [0], sortable : false } 
    ] 
}) 

然後table.init().columnDefstable.init().aoColumnDefs會存在,但table.init().columns不會,因爲你沒有通過一個columns結構到數據表。