DataTables 1.10 列数

DataTables 1.10 column count

我想添加一个额外的 <thead>,它将包含我对数据 table 中该列的过滤器。

我可以使用以下脚本来做到这一点。 (为此,我应该在 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 并且我不知道预先的列数并且添加的 table 代码只是 <table id='xxxxxx'></table>)

我希望问题得到理解,我只需要知道如何使用 datatables 计算列数。

我试过 myDataTable.fnSettings().aoColumns.length 但它说 "fnSettings is not a function" 看起来它在 1.10 中被删除了,还有其他选择吗?

使用 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 的初始化选项。如果你有这样的数据表初始化

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

然后 table.init().columnDefstable.init().aoColumnDefs 将出现,但 table.init().columns 不会出现,因为您没有将 columns 结构传递给数据表。