У меня есть таблица, которая получает свои данные на стороне сервера, используя пользовательские параметры инициализации на стороне сервера, которые различаются в зависимости от того, какой отчет создается. После создания таблицы пользователь может открыть всплывающее окно, в котором они могут добавить несколько дополнительных фильтров для поиска. Мне нужно иметь возможность использовать те же параметры инициализации, что и исходная таблица, и добавлять новые, используя fnServerParams.Datatables: как перезагрузить данные на стороне сервера с дополнительными параметрами
Я не могу понять, как получить исходные параметры инициализации, используя API-интерфейсы datatables. Я думал, что я мог бы получить ссылку на объект, получить настройки с помощью fnSettings, и передать эти параметры в новый экземпляр DataTables так:
var oSettings = $('#myTable').dataTable().fnSettings();
// add additional params to the oSettings object
$('#myTable').dataTable(oSettings);
но переменная возвращаемый через fnSettings не то, что мне нужно, и не работает.
На данный момент кажется, что я собираюсь перепроектировать вещи так, чтобы я мог передавать параметры инициализации вокруг как переменную и добавлять параметры по мере необходимости, если только кто-то не может направить меня в правильном направлении.
EDIT: После ответа tduchateau в поле ниже, я смог частично там с помощью
var oTable= $('#myTable').dataTable(),
oSettings = oTable.fnSettings(),
oParams = oTable.oApi._fnAjaxParameters(oSettings);
oParams.push('name':'my-new-filter', 'value':'my-new-filter-value');
и могу подтвердить, что моя новая ServerSide PARAMS добавляется к существующим Params.
Однако я все еще не совсем там.
$('#myTable').dataTable(oSettings);
выдает ошибку:
DataTables warning(table id = 'myTable'): Cannot reinitialise DataTable.
To retrieve the DataTables object for this table, please pass either no arguments
to the dataTable() function, or set bRetrieve to true.
Alternatively, to destroy the old table and create a new one, set bDestroy to true.
Установка
oTable.bRetrieve = true;
не избавиться от ошибки, и настройки
oSettings.bRetrieve = true;
приводит таблицу не выполняющее вызов ajax. Установка
oSettings.bDestroy = true;
теряет все пользовательские Params, при установке
oTable.bDestroy = true;
возвращает вышеуказанную ошибку. И просто позвонить
oTable.fnDraw();
вызывает перерисовку таблицы с ее исходными настройками.
Вы когда-нибудь это выясняли? Я столкнулся с подобной проблемой. – Voodoo
@ Voodoo, см. Мой ответ ниже – earachefl