Имя столбца в CreatedCell в DataTable

#javascript #datatables

Вопрос:

Я работаю с DataTable и пытаюсь сделать что-то подобное

     columnDefs: [{
      "targets": '_all',
      "createdCell": function (td, cellData, rowData, row, col) {
        alert("You are in column: "   Columns[col].name);
       }
    }]
 

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

Ответ №1:

Вы можете получить доступ к этой информации из объекта таблицы settings , но имейте в виду, что это внутренний объект DataTables, который вы должны использовать только в том случае, если нет другого официального вызова API, который вы можете использовать вместо него.

Предполагая, что у вас есть таблица со следующим идентификатором:

 <table id="example"></table>
 

тогда вы можете использовать это:

 columnDefs: [{
  "targets": '_all',
  "createdCell": function (cell, cellData, rowData, rowIndex, colIndex) {
    var colInfo = $('#example').DataTable().settings()[0].aoColumns[colIndex];
    console.log( "This column has the following title: "   colInfo.sTitle );
    console.log( "This column has the following name: "   colInfo.sName );
   }
}]
 

Это показывает, как получить доступ как к названию, так и к имени — выберите то, что вам нужно!

Я не видел лучшего способа получить доступ ни к одному из них, но если он есть, то это было бы предпочтительнее такого подхода.

Комментарии:

1. у меня не было идентификатора «#Пример», но я мог использовать «$(Это)» в качестве контекста, в котором я работал, был сам DataTalbe. Что мне точно было нужно, так это строка DataTable().settings()[0].aoColumns[colIndex]. Большое спасибо! =)