我需要掌握现有数据表的 fnRowCallback 设置,但我尝试的一切似乎都失败了。
我尝试过什么:
1:
var dt = $('#table').dataTable({
"bRetrieve": true,
"fnRowCallback" : function (nRow, aData, iDisplayIndex, iDisplayIndexFull) {
console.warn("working");
}
);
2:
var dt = $('#table').dataTable({"bRetrieve": true});
dt.fnSettings().fnRowCallback = function (nRow, aData, iDisplayIndex, iDisplayIndexFull) {
console.warn("working");
}
不走运,但如果我改变
var dt = $('#table').dataTable({"bRetrieve": true});
dt.fnSettings().sAjaxSource = "invalid url";
我收到一个错误,因此似乎可以工作。另外,如果我在原始数据表初始化中执行 fnRowCallback ,它会起作用,但这不是我想要的。
我删除了我的旧答案,因为我真的不明白你的帖子(已经晚了!)
看来你要么必须使用非官方 API,要么销毁旧表并重新初始化它。
非官方API方式(未来版本可能行不通),已测试;使用数据表 1.9.2
$("#table").dataTable().fnSettings().aoDrawCallback.push( {
"fn": function (oSettings) {
if ( oSettings.aiDisplay.length == 0 ) {
return;
}
var nTrs = $('#table tbody tr');
var iColspan = nTrs[0].getElementsByTagName('td').length;
var sLastGroup = "";
for ( var i=0 ; i<nTrs.length ; i++ ) {
var iDisplayIndex = oSettings._iDisplayStart + i;
data = oSettings.aoData[ oSettings.aiDisplay[iDisplayIndex] ]._aData;
// Now you can access things like
if (data.percentage > 80) {
// And access the rows like this
$(nTrs[i]).addClass("highlight-green");
}
}
},
} );
正确方法:保存旧设置,销毁,重新初始化
var oTable = $('#table').dataTable();
var oldoptions = oTable.fnSettings();
var newoptions = $.extend(oldoptions, {
fnRowCallback: function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {
console.warn("working");
}
})
oTable.fnDestroy();
$('#table').dataTable(newoptions);
参考:http://datatables.net/forums/discussion/2737/addchange-callback-after-initialization-or-else-clone-settings-to-re-build-table/p1 http://datatables.net/forums/discussion/2737/addchange-callback-after-initialization-or-else-clone-settings-to-re-build-table/p1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)