Сортировка JQuery DataTable конфликтует с Ajax - PullRequest
0 голосов
/ 15 июня 2011

Итак, вот оно: я использовал плагин dataTable для отображения моей HTML-таблицы.Когда я нажал на заголовок столбца, этот столбец был отсортирован.Это работает хорошо.Но когда я попытался реализовать Ajax, он начинает работать в стиле фанк.Я могу удалить документ DOM через Ajax, и строка исчезает из таблицы.Но после этого, если я нажму на заголовок таблицы, строка внезапно вернется и отобразится, даже если она уже удалена в базе данных!Что здесь происходит с dataTable?Я подозреваю, что jQuery remove () не удаляет фактический элемент из DOM страницы, так или иначе он остается там, но не отображается.Поэтому, когда я нажал на заголовок, таблица данных подумала, что строка все еще там.Я застрял.Кто-нибудь может мне с этим помочь?Ваша помощь очень ценится.Спасибо

Ответы [ 2 ]

0 голосов
/ 04 августа 2017

Это старый вопрос, поэтому я не уверен, что API был доступен в то время.Этот вопрос похож на этот вопрос SO , но трудно сказать без подробностей.

Возможно, ваша проблема заключается в удалении данных из DOM без их удаления из DataTable.Их документация говорит об удалении данных следующим образом:

var table = $('#example').DataTable();
 
$('#example tbody').on( 'click', 'img.icon-delete', function () {
    table
        .row( $(this).parents('tr') )
        .remove()
        .draw();
} );

DOM отражает изменения с помощью команды .draw() и удаляет строку с данными с помощью вызова .row().remove() api.

0 голосов
/ 18 июня 2011

Здесь может происходить одна из многих вещей.

  • Используете ли вы кеширующий конвейер с "fnServerData"?

  • Я предполагаю, что при удалении строки из таблицы данных вы такжесделать вызов ajax, чтобы удалить его из базы данных.Вы уверены, что действие завершено, прежде чем пытаться выполнить повторную сортировку?

  • Вместо .remove () вы можете использовать $ ("# tableID"). FnDraw () дляуспешный обратный вызов вашего обратного вызова удаления.Это приведет к тому, что таблицы данных будут получать новые данные из базы данных и отображать для вас таблицу.

Когда вы используете "bServerSide": true в качестве опции для таблицы данных, это, вероятно, лучшая практикане удалять элементы dom с помощью jquery.remove () или другого подхода к манипулированию dom, а вместо этого позволить datatable.fnDraw () обрабатывать добавление и удаление столбцов на основе данных, которые он получает из базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...