2015-09-07 6 views
0

У меня есть datatable, который использует ajax для загрузки значений.jquery datatable highlight падает после перезагрузки

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

using setInterval, я прошу перезагрузить эту таблицу каждые 5 секунд.

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

Когда Datatable перезагружается, он падает со строки выделения. Может кто-нибудь, пожалуйста, скажите мне, как сохранить подсветку в строке после перезагрузки?

Благодаря

+0

Когда я нажимаю на строке, я могу видеть, что строка будет выделена в темно-голубой, но это не упадите на перечитывания – Saj

+0

Вы можете использовать jQuery для сохранения идентификатора выделенной строки в скрытом поле (вне таблицы), затем после обновления, получить значение 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

Я предполагаю, что выше кода не будет работать как нет, когда функция выделения выделяет фокус на любую строку? –

Смежные вопросы