jQuery DataTables: как добавить идентификатор строки в каждую динамически добавляемую строку?

Резюме

Я использую отличный плагин jQuery dataTables из http://www.datatables.net . В моем сценарии я динамически добавляю строки в зависимости от срабатывания события, используя fnAddData . Используя fnRowCallback , я добавляю уникальный идентификатор строки.Иногда это не удается, и идентификатор строки не добавляется. В тесте на добавление 46 строк обычно от 6 до 8 строк не получают идентификатор строки.


Функция добавления строки

function ps_ins(row)
{
  var rowArray = row.split('|');
  row = rowArray;
  var alarmID = parseInt(row[1],10);

  $('#mimicTable').dataTable().fnAddData([
    alarmID, 'col2', 'col3', 'col4',
    'col5', 'col6', 'col7'
  ]);
}

Строки добавляются в таблицу правильно. Тест, который я выполняю, добавляет 46 строк, и все они выглядят так, как ожидалось.


Добавить идентификатор строки

Я пытаюсь добавить уникальный идентификатор к каждой строке, чтобы позже я мог изменить конкретную строку и ссылаться на нее в кэше dataTable, используя комбинацию fnGetRows и .filter.

Я делаю это с помощью fnRowCallback на этапе инициализации. Я сохранил все остальные настройки на случай, если там есть что-нибудь, что может повлиять на проблему.

  $('#mimicTable').dataTable({
    "sDom": 'lip<"mimicSpacer">f<"numUnAck">rt',
    "sScrollY": "365px",
    "aaSorting": [[4,'desc'],[5,'desc']],
    "iDisplayLength": 15,
    "aLengthMenu": [[15, 50, 100, -1], [15, 50, 100, 'All']],
    "bAutoWidth": false,
    "aoColumns": [
      null,
      { "sWidth": "20%" },
      { "sWidth": "22%" },
      { "sWidth": "9%" },
      { "sWidth": "9%" },
      { "sWidth": "20%" },
      { "sWidth": "20%" }
    ],
    "fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull) {
      $(nRow).attr("id",'alarmNum' + aData[0]);
      return nRow;
    }
  });

В console.log объекта dataTable показано: missing row ids

Как видите, №14 имеет идентификатор строки, а также правильный класс rowStripe. # 15 (и далее) нет.

Итак, почему fnRowCallback не запускается каждый раз при добавлении строки, только иногда? Может быть, есть лучший способ добавить идентификатор строки при добавлении строки?

13
задан Brian Tompsett - 汤莱恩 5 December 2016 в 17:42
поделиться