Могу ли я обновить данные jQuery DataTable (1.10), полученные с помощью AJAX?

У меня есть таблица данных (1.10), извлекающая данные через AJAX с сервера. Он не использует обработку на стороне сервера, он получает весь набор данных и манипулирует им локально в браузере. Затем мне нужно обновить данные и отправить их позже. Я нахожусь в манипулирующей части, но не могу понять, как это сделать. Что мне нужно сделать, так это обновить данные для ячейки, локально обновить таблицу, и после того, как пользователь закончит изменять вещи, используйте эти данные в POST, чтобы сохранить их.

Мне удалось обновить данные несколькими способами, в том числе:

$('#dt').dataTable().api().row().data().Code="foo"
$('#dt').dataTable().api().rows().data()[0].Code="foo"

Я вижу новые данные, когда делаю что-то вроде:

$('#dt').dataTable().api().rows().data()

Однако, если я позвоню draw(), он не обновит таблицу.

Единственное, о чем я могу думать, это удалить AJAX из уравнения. Я мог бы вытащить данные отдельно и просто использовать в таблице данных локальный массив, манипулировать массивом вне таблицы (хотя, кажется, я уже делаю это успешно) и перерисовывать или уничтожать/воссоздавать его... Похоже, это должно быть возможно, но, возможно, не с источником данных AJAX.

P.S. Я думаю, что должен быть тег jquery-datatables-1.10, поскольку его использование может значительно различаться между версиями.


person Josh    schedule 02.07.2014    source источник


Ответы (1)


Ой, извините, я только что нашел эту жемчужину в документах:

Если вы изменяете данные, содержащиеся в возвращаемом массиве, убедитесь, что вы используете rows().invalidate()DT, columns().invalidate()DT или любой другой метод аннулирования, чтобы DataTables заметила изменение и повторила его. читать источник данных.

Это решило мою проблему:

$('#dt').dataTable().api().rows().invalidate().draw()
person Josh    schedule 02.07.2014