2013-01-19 14 views
8

Mam DataTables v1.9.4 wypełnione z tablicy javascript i mam pole wyboru kolumna, która jeśli jest :checked następnie cały wiersz powinien aktualizować co 5 sekund, problem polega na tym, że mam dużą funkcję fnRowCallback, która nie jest wykonywana po wierszu zaktualizuj więc wszystkie moje struktury kolumnowe. tutaj jest mój kod zmiana:jak zaktualizować wiersz w datatables bez przerysowywania tabeli?

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); 
}; 

a to mój 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); 
        } 
       }); 
      }, 

problem jest: jak przerysować jeden wybrany wiersz z fnRowCallback bez przerysować cały stół i zachować jego sprawdzane stan po przerysowaniu
EDYTOWANIE:
Sprawdziłem dwukrotnie mój kod i zobaczyłem, że mój kod jest aktualizowany c Prosto, ale problem polega na tym, że mój kod jest ładowany w tabeli w sposób, w jaki jest odbierany przez ajax, a nie w sposób, w jaki zmieniłem kolejność kolumn tabeli

Odpowiedz

3

Możesz użyć fnUpdate. W zasadzie to działa indeksem wiersza, a wszystkie wartości z wiersza musi być włożona (nie można wpisać 2 wartości, gdy masz 4 kolumny na przykład)

Tu jest link do API metody: jQuery DataTable fnUpdate

Myślę, że to wywołuje oddzwanianie wiersza, ale nie jestem tego pewien.

+0

tnx za odpowiedź ur odpowiedź jest prawie poprawna i rozwiązałem ją około 10 miesięcy wcześniej! ale tnx może to rozwiązać – Homam

+0

przepraszam, przeszedł przez Unanswered, nie widziałem daty. –