2016-01-05 1 views
2

Я хочу добавить дополнительный <thead>, который будет содержать мои фильтры для этой колонки в datatable.DataTables 1.10 кол-во столбцов

Я могу сделать это, используя следующий скрипт. (Для этой работы я должен был 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>)

Надеюсь, вопрос будет понятен, мне просто нужно знаете, как я могу получить количество столбцов, использующих datatables.

Я пробовал myDataTable.fnSettings().aoColumns.length, но он говорит, что «fnSettings - это не функция», похоже, что он лишен 1.10, есть ли альтернатива этому?

ответ

2

Используя API 1.10.x существует несколько способов получить количество столбцов. Примеры:

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.