Отключить/запретить обратный вызов поиска при вставке новой строки с помощью jquery Datatable

Фон:

У меня есть Datatable, который я создаю следующим образом в JS:

let mytable = $('#myTableId').DataTable();

Затем позже в моем коде я программно добавляю 5 строк в эту таблицу данных следующим образом:

for(let i=0; i<5; i++){
    mytable.row.add(someVectorValuedFunction(i)).draw(false);
}

Проблема:

Каждый раз, когда строка вставляется в таблицу данных mytable, вызывается функция сортировки данных. Функция сортировки выполняется за O(n), т. е. она выполняет итерацию по каждой строке и решает, показать ли эту строку или скрыть ее. Следовательно, вставка n строк в mytable имеет эффективную сложность в наихудшем случае O (n ^ 2). Точная сложность примерно такова, что n(n-1) становится текущей агрегацией циклов сортировки.

Ограничение:

В какой-то момент мне нужно иметь возможность сортировать таблицу. Это означает, что любое решение, которое я нахожу, должно соответствовать способности таблицы сортировать ИЛИ мне нужно иметь возможность отключить, а затем включить сортировку в таблице.

Вопрос:

Как предотвратить вызов функции сортировки каждый раз, когда строка вставляется в таблицу данных jQuery?


person Tom Mathew    schedule 03.01.2017    source источник


Ответы (1)


Просто измените отрисовку (ложь) -> отрисовку ('страница'). Это должно помешать функции отрисовки переупорядочивать и использовать в соответствии с документацией.

https://datatables.net/reference/api/draw()

person Sam Kool    schedule 03.01.2017
comment
Вау, это было довольно просто. Благодарю вас! - person Tom Mathew; 03.01.2017