Datatables colReorder сохранение БЕЗ сохранения состояний - PullRequest
0 голосов
/ 06 сентября 2018

Я использую datatables и использую colReorder , и мне нужно сохранить состояние столбцов без использования Statesave (мне не разрешено использовать localcache). Однако в моей базе данных есть таблица предпочтений для хранения такого рода информации в формате JSON.

Я посмотрел на colReorder.order () , который выглядит так, как мне нужно, чтобы получить заказ.

Пока я думаю об изменении столбца, вызовите colReorder.order () и поместите возвращенный массив в мою таблицу предпочтений, а затем при повторной инициализации используйте это для переупорядочения таблицы.

Итак, мой вопрос / в чем мне нужна помощь: при смене colOrder мне нужно сохранить порядок, в котором они находятся, и обновить мои настройки. Как мне это сделать? Я не могу найти "где" разместить colReorder.order (). Я не видел onChange () для datatables или даже уверен, что это будет лучший способ приблизиться к этому

РЕДАКТИРОВАТЬ: Ответ Дэвида является идеальным решением, однако не применимо в моей ситуации из-за уже существующего кода и лени.

Мое решение / обходной путь , которое я обнаружил, состояло в том, чтобы привести в соответствие и сохранить details.mapping из этой функции в мои настройки, и при инициализации моей таблицы я использую colReorder.order (saveArray [], true ).

Оставить его на случай, если кто-нибудь окажется в ситуации, в которой я находился.

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Звучит так, как будто вы используете опцию server-side processing. В этом случае вы можете добавить массив переупорядочения столбцов к объекту отправленные параметры и сохранить его таким образом.

0 голосов
/ 06 сентября 2018

На самом деле DataTables предоставляют методы для хранения и извлечения state в и из альтернативного местоположения. Посмотрите на stateSaveCallback и stateLoadCallback.

Однако в моей базе данных есть таблица предпочтений для хранения этого вид информации в формате JSON

Тогда вам просто нужно заполнить «пробелы». Предположим, у вас есть серверный скрипт с именем statesave, который может хранить и извлекать состояние с помощью 'set' и 'get', используя уникальный userId. Скелет будет выглядеть так:

$('#example').DataTable({
  stateSave: true,
  stateSaveCallback: function(settings, data) {
     $.ajax( {
      url: 'statesave',
      dataType: 'json',
      data: { 
        action: 'set', 
        userId: aUserId,
        state: data 
      }
    })
  },
  stateLoadCallback: function(settings) {
     var state;
     $.ajax( {
       url: 'statesave',
       dataType: 'json',
       async: false,
       data: { 
         action: 'get', 
         userId: aUserId
       },
       success: function(data) {
         state = data
       })
     })
     return state
  }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...