摘要
我正在使用来自http://www.datatables.net的强大的dataTables jQuery插件。在我的脚本中,我根据事件触发使用fnAddData
动态添加行。使用fnRowCallback
,我添加了一个唯一的行ID。有时会失败并且没有添加行ID。在添加46行的测试中,通常会有6到8行没有行ID。
添加行函数
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行,所有行都如预期一样出现。
添加行ID
我正在尝试为每一行添加一个唯一的ID,以便稍后可以修改特定的行,并使用fnGetRows和.filter引用它在dataTable的缓存中。
我正在初始化阶段使用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;
}
});
一个关于dataTable对象的console.log
显示:
你可以看到,#14有行ID并且正确地应用了rowStripe类。而#15(以及之后的行)则没有。
那么,为什么fnRowCallback不是每次添加一行都会触发,只有时而才触发?也许有更好的方法在添加行时添加行ID?
fnRowCallback
函数中记录nRow的值了吗? - Phil Parsons