Я использую плагин jQuery Datatable для рендеринга таблицы как jQuery DataTable. Я не использую какие-либо вызовы на стороне сервера для получения сведений о строках таблицы.
Я генерирую таблицу HTML с использованием jQuery из информации, доступной на странице, которую пользователь просматривает в настоящее время.
<table cellpadding="0" cellspacing="0" border="0" class="display" id="list_table">
<thead>
</thead>
<tbody>
</tbody>
</table>
Когда пользователь нажимает на ссылку, с помощью jQuery я строю необходимые строки для таблицы и устанавливаю ее в тело таблицы.
После этого я инициализирую dataTable, как показано ниже:
$('#list_table').dataTable({
"bProcessing": false,
"bJQueryUI": true,
"bPaginate": true,<br>
"bAutoWidth": false,
"bFilter" : true,
"bDestory" : true,<br>
"oLanguage": { "sZeroRecords": "No data available", "sSearch" :"Filter" }
});
Вышеуказанное работает нормально, когда пользователь нажимает на ссылку в первый раз. Но если пользователь нажимает снова, я получаю ошибку dataTable выдает ошибку:
DataTables warning (table id = 'list_table'): Cannot reinitialise DataTable. .....
Несмотря на то, что таблица показана, она теряет свой CSS для данных, поиск больше не работает, следующий предыдущий больше не работает.
Я пробовал различные варианты, такие как установка "bRetrieve" : true
, также пытался проверить, доступен ли объект с данными:
if (typeof dTable == 'undefined') {
dTable = $('#list_table').dataTable({
"bProcessing": false,
"bJQueryUI": true,
"bPaginate": true,
"bAutoWidth": false,
"bFilter" : true,
"bDestory" : true,
"oLanguage": { "sZeroRecords": "No data available", "sSearch" :"Filter" }
});
} else {
dTable.fnClearTable();
}
Но, похоже, ничего не работает. Я использовал DataTable с ajax-вызовом на стороне сервера для перезагрузки данных с сервера, где он работает нормально, но в этом случае я не уверен, как решить эту проблему.
Спасибо.
Jay