2013-01-19 41 views
8

我有一個JavaScript表格填充從javascript數組,我有複選框的列,如果它是:checked那麼整行應該每5秒更新一次,問題是我有一個大的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); 
        } 
       }); 
      }, 

問題是: 如何重繪fnRowCallback一個選定的行不重繪整個表,並保持它的檢查重繪後的狀態
編輯:
我再次檢查我的代碼,看到我的代碼被更新c orectly但問題是,我的代碼是通過ajax收到的方式在表中加載,而不是以我重新排序我的表列的方式

回答

3

您可以使用fnUpdate。基本上,它的工作原理是行索引和行的所有值必須被插入(無法輸入2倍的值時,你有4列爲例)

下面是該方法的API鏈接:jQuery DataTable fnUpdate

我認爲它觸發了行回調,但我不知道它。

+0

tnx回答你的答案几乎是正確的,我解決了它大約10個月前!但tnx它可以解決這個 – Homam

+0

對不起,經過Unanswered,沒有看到日期。 –

相關問題