如何在没有表重绘的情况下更新数据表中的行?

时间:2013-01-19 06:33:42

标签: javascript jquery arrays jquery-datatables

我有一个从javascript数组填充的dataTables v1.9.4,我有复选框列,如果它是:checked那么整行应该每5秒更新一次,问题是我有一个大的{{1行更新后不执行的函数,因此我的所有行结构都会崩溃。这是我的更新代码:

fnRowCallback

这是我的function updateRow(){ newRowData = $.data(document.body, 'updatedData'); var newRow = []; newRow.push(1, 1); for (var title in newRowData[0]){ newRow.push(newRowData[0][title]); } oTable.fnUpdate( newRow, updateIndex, false, true); };

fnRowCallback

问题是:   如何使用"fnRowCallback": function( nRow, aData, iDisplayIndex ) { //make 3state button and indicator for relay mask & status $('td.relay', nRow).each(function(){ relayStatus = $(this).text(); $(this).html('<div class="hidden-value">' + relayStatus + '</div><div></div>'); if(relayStatus == 1){ $(this).children('div:last').addClass('relmas1'); } if(relayStatus == 0){ $(this).children('div:last').addClass('relmas0'); } if(relayStatus == -1){ $(this).children('div:last').addClass('relmas-1'); } }); //makes update checkboxes var clientID = $('td.clientid', nRow).text(); $('td.update', nRow).html('<input type="checkbox" data-clientid="' + clientID + '" />'); //makes volumes var cuVol = parseInt($('td.volume', nRow).text(), 10) $('td.volume', nRow).html('<div class="volume-container"><div class="volume-tmp">' + cuVol + '</div><div class="volume-slider"></div></div>') $('td.volume div.volume-slider', nRow).slider({ value: cuVol, range: "min", orientation: "horizontal", slide: function( event, ui ) { cuVol = ui.value; $(this).siblings('div.volume-tmp').text(ui.value); } }); }, 重绘单个选定的行而不重绘整个表并在重绘后保持其检查状态 编辑:
我仔细检查了我的代码并看到我的代码正在更新corectly但问题是我的代码加载在表中的方式是通过ajax收到的方式而不是我重新排序我的表列

1 个答案:

答案 0 :(得分:3)

您可以使用fnUpdate。基本上它按行索引工作,并且必须插入行的所有值(例如,当你有4列时,不能输入2个值)

以下是方法API的链接:jQuery DataTable fnUpdate

我认为它会触发行回调,但我不确定它。