2015-09-07 53 views
0

我有一個使用ajax加載值的數據表。jquery datatable突出顯示下降後重新加載

var table = $('#example').DataTable({ 
    "ajax": "xxxxxx.aspx", 
    stateSave: true, 
     "aLengthMenu": [ 
     [10, 25, 50, 100], 
     [10, 25, 50, 100] 
    ], 
     "iDisplayLength": 25, 
     "order": [ 
     [0, "desc"] 
    ], 
    columnDefs: [{ 
     "visible": false, 
     "targets": [2, 3] 
    }, { 
     "type": 'date-uk', 
     "targets": [1, 9, 10] 
    }, { 
     "type": 'title-string', 
     "targets": [11] 
    }], 
}); 

$('#example tbody').on('click', 'tr', function() { 
    if ($(this).hasClass('selected')) { 
     $(this).removeClass('selected'); 
    } else { 
     table.$('tr.selected').removeClass('selected'); 
     $(this).addClass('selected'); 
    } 
}); 

使用setInterval,我要求該表每5秒重新加載一次。

setInterval(function(){table.ajax.reload(null, false)}, 5000); 

當Datatable重新加載時,它將從高亮行中刪除。任何人都可以請告訴我如何在重新加載後保留行上的高光?

感謝

+0

當我點擊該行,我可以看到,排在深藍色高亮顯示,但它確實落於重載 – Saj

+0

您可以使用jQuery將突出顯示的行的ID保存在隱藏字段中(表外部),然後在刷新後檢索id值,並使用它來選擇並再次突出顯示該行。 – markpsmith

回答

0

你可以做這樣的事情:

function highlight() { 
    $('#example tbody').on('click', 'tr', function() { 
     if ($(this).hasClass('selected')) { 
      $(this).removeClass('selected'); 
     } else { 
      table.$('tr.selected').removeClass('selected'); 
      $(this).addClass('selected'); 
     } 
    }); 
} 

$(document).ready(function() { 

    // Call the function at document ready 
    highlight(); 

    // Call the ajax and the function every 5 seconds 
    setInterval(function() { 
     table.ajax.reload(null, false); 
     highlight(); 
    }, 5000); 

}); 
+0

我想上面的代碼不會工作,因爲沒有哪裏突出顯示功能將焦點設置到任何行? –

相關問題