JQuery Значение фильтра SearchPane Datatables - PullRequest
0 голосов
/ 09 мая 2020

Я использую расширение SearchPanes для Datatables, я пытаюсь зафиксировать значение элемента в выбранной ими SearchPane, похоже, что, поскольку SearchPanes использует filter () вместо search (), это значение недоступно. Я не прав?

1 Ответ

1 голос
/ 09 мая 2020

Вы можете получить доступ к выбору следующим образом:

1) Добавьте stateSave: true в определение инициализации DataTable. См. в этом примере .

Это приведет к тому, что все выбранные параметры будут сохранены в локальном хранилище браузера .

2) Используйте следующие logi c для доступа к локальному хранилищу браузера:

var myStorage = window.localStorage;
var searchPanes = JSON.parse(myStorage.getItem('yourStorageIndexGoesHere'));
//console.log(searchPanes); // the full JSON - large!
//console.log(searchPanes['searchPanes']['panes']); // one object per search pane
searchPanes['searchPanes']['panes'].forEach(function(pane) { 
  console.log('ID = ' + pane.id + ' - selected: ' + pane.selected); 
});

В моем случае я использовал панели поиска, показанные в этой демонстрации .

Вот снимок экрана с некоторыми вариантами выбора:

enter image description here

Вот что пример кода записывает в консоль браузера для указанных выше вариантов. :

enter image description here

Значение данных «ID» представляет собой отсчитываемый от нуля индекс столбца. Итак, столбец 3 (индекс 2) - это столбец Office, а столбец 6 (индекс 5) - столбец Salary.

Связанные «выбранные» данные представляют собой массивы, содержащие одно или несколько значений. Вы можете перебирать массивы, чтобы получить каждое отдельное значение.

Вам нужно будет заменить yourStorageIndexGoesHere фактическим именем вашей записи в хранилище. Самый простой (ручной) способ найти это - выполнить фильтр с помощью SearchPanes, а затем открыть инструменты браузера (обычно F12). Затем (предполагая FireFox в моем случае) перейдите в Storage> Local Storage> и выберите соответствующий ключевой текст.

Указывает на примечание:

a) Это предполагает вы согласны активировать функцию "локального хранилища". Это означает, что браузер запомнит последний примененный фильтр и повторно применит его, когда пользователь вернется на страницу браузера DataTable. Если пользователям не нужна эта функция, мое решение вам не подойдет.

б) Я не могу посоветовать вам, где вам нужно разместить JavaScript, который я предоставил, потому что я не знать, что вы хотите делать с этой информацией. Но, например, вы можете использовать его после каждого события draw() - в этом случае см. Здесь .

...