JQuery dataTables добавляет id в добавленную строку

Можно ли добавить идентификатор в последнюю добавленную строку с помощью jQuery DataTables (например, <tr id="myid">...</tr>)?

$('#example').dataTable().fnAddData( [
        "col_value_1",
        "col_value_2",
        "col_value_3",
        "col_value_4" ] );

(Добавить идентификатор в эту новую строку)

Ответ 1

Используйте обратный вызов fnCreatedRow/madeRow. Лучше всего установить атрибут id строки таблицы при создании строки. Используйте то, что предоставил API, и вам не нужно будет его взламывать или иметь грязный код

Эта функция вызывается, когда создается элемент TR (и все дочерние элементы TD были вставлены), или регистрируется при использовании источника DOM, что позволяет манипулировать элементом TR (добавлять классы и т.д.).

//initialiase dataTable and set config options
var table = $('#example').dataTable({
    ....
    'fnCreatedRow': function (nRow, aData, iDataIndex) {
        $(nRow).attr('id', 'my' + iDataIndex); // or whatever you choose to set as the id
    },
    ....
});

// add data to table post-initialisation
table.fnAddData([
    'col_value_1',
    'col_value_2',
    'col_value_3',
    'col_value_4'
]);

Ответ 2

Это сработало для меня

var MyUniqueID = "tr123"; // this is the uniqueId.
var rowIndex = $('#MyDataTable').dataTable().fnAddData([ "column1Data", "column2Data"]);
var row = $('#MyDataTable').dataTable().fnGetNodes(rowIndex);
$(row).attr('id', MyUniqueID);

Ответ 3

Если вы используете row.add(), легко установить id:

   var table = $('#example').DataTable();
   var rowNode = table.row.add([
        "col_value_1",
        "col_value_2",
        "col_value_3",
        "col_value_4"
    ]).node();

    $(rowNode).attr("id", myid);

.node() возвращает элемент вновь добавленной строки.

Ответ 4

Это сработало для меня

var rowNode=$('#MyTable').DataTable().row.add([1,2,3]).draw( false );

rowNode.id='myId';

Ответ 5

Надежность ниже кода поможет вам

var rowid = $('#example').dataTable().fnAddData( [
    "col_value_1",
    "col_value_2",
    "col_value_3",
    "col_value_4" ] );
var theNode = $('#example').dataTable().fnSettings().aoData[rowid[0]].nTr;
theNode.setAttribute('id','your value');

Ответ 6

Вот более чистый подход, который я нашел здесь:

table.row.add( [ ... ] ).node().id = 'myId';
table.draw( false );