DataTables 1.10列数

时间:2016-01-05 10:16:05

标签: datatables-1.10

我想添加一个额外的<thead>,其中包含我在datatable中对该列的过滤器。

我可以使用以下脚本执行此操作。 (为了这个工作我应该在dom中定义)

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,但它说&#34; fnSettings不是一个函数&#34;它看起来像是在1.10被删除了,还有其他选择吗?

1 个答案:

答案 0 :(得分:6)

使用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()只保存您实际传递给dataTables的初始化选项。如果你有像这样的dataTables初始化

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

然后会出现table.init().columnDefstable.init().aoColumnDefs,但table.init().columns不会出现,因为您尚未将columns结构传递给dataTables。