Сводка
Я использую отличный плагин dataTables jQuery из 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 строк, и все они отображаются, как и ожидалось.
Добавление идентификатора строки
Я пытаюсь добавить уникальный идентификатор для каждогоrow, чтобы впоследствии я мог изменить определенную строку и ссылаться на нее в кеше 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;
}
});
A console.log
объекта dataTable показывает: ![missing row ids](https://i.stack.imgur.com/B5bnG.png)
Как видите, # 14 имеет идентификатор строки, а также правильный класс rowStripe.# 15 (и далее) нет.
Итак, почему fnRowCallback не запускается при каждом добавлении строки, только иногда?Может быть, есть лучший способ добавить идентификатор строки при добавлении строки?