我想添加一个额外的<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被删除了,还有其他选择吗?
答案 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().columnDefs
和table.init().aoColumnDefs
,但table.init().columns
不会出现,因为您尚未将columns
结构传递给dataTables。