8

私はdataTables v1.9.4を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再描画し、再描画後にチェック状態を維持する方法
編集:
コードを再確認し、コードが正しく更新されていることを確認しましたが、問題はコードがロードされていることですテーブルの列を並べ替えた方法ではなく、ajax経由で受信される方法でテーブル

4

1 に答える 1

3

fnUpdate を使用できます。基本的には行インデックスによって機能し、行のすべての値を挿入する必要があります (たとえば、4 つの列がある場合に 2 つの値を入力することはできません)。

メソッドの API へのリンクは次のとおりです: jQuery DataTable fnUpdate

行コールバックをトリガーすると思いますが、よくわかりません。

于 2013-12-23T13:50:12.713 に答える