2009-12-17 2 views
6

Я протестировал это, и причина, по которой я задал вопрос, состоит в том, что он, кажется, делает разные вещи для разных таблиц.Используя плагин jQuery DataTables, добавляет ли fnAddData() строки в верхнюю или нижнюю часть таблицы html?

Я не могу найти документацию, если это настраивается или нет. Я бы подумал, что это добавит строки в нижнюю часть, но у меня есть несколько примеров, где я вижу, что иногда они добавляют строки вверху или даже посередине. Кажется довольно случайным.

Любые идеи?

ответ

12

Я рассмотрел исходный код, и fnAddData вызывает внутренний метод _fnAddData, который добавляет одну строку и в случае успеха возвращает свой индекс в таблице. _fnAddData добавляет новую строку внизу (индекс новой строки равен числу строк в таблице).

Однако fnAddData имеет необязательный параметр для перерисовки таблицы с учетом различных функций, которые включены. Этот параметр по умолчанию имеет значение true, и это, вероятно, вызывает «случайное» поведение.

5

Просматривает источник Datatable, как объясняется kgiannakaki. Метод добавит все новые строки данных в конец таблицы, как следует.

Причина «случайного» поведения, так как каждый раз, когда добавляется новая строка, метод будет выполнять «перерисовку» всей таблицы, если не указано иное. Когда это происходит, таблица запускается через множество функций, таких как фильтрация/сортировка и т. Д. И т. Д. ... и полностью переписана на страницу. По сути, я собираюсь предположить, что вы добавляете случайные биты данных в новые строки, которые могут создавать «случайный» эффект, всякий раз, когда добавляется новая строка.

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

$(this).fnAddData(data, false); 

Если эта проблема по-прежнему сохраняется, я бы поставил ошибку для этой проблемы, поскольку это не является другой причиной такого поведения.

4

Чтобы отключить сортировку, так что новая строка будет добавлена ​​в нижней части таблицы, добавить

"bSort": false 

до (вверху) вашей DataTable инициализации.

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