2015-04-29 3 views
0

У меня есть требование, в котором я должен хранить состояние DataTable как «пагинацией», «сортировка», «поиск» и т.д. Для этого я установить 'bStateSave' property to 'True', и это работает очень хорошо. Я знаю, что «bStateSave» сохраняет состояние в форме Cookie. Теперь у меня есть еще одно требование, в котором я должен перезагрузить DataTable и повторно инициализировать его в случае входа пользователя.Как повторно инициализировать DataTable в Jquery

ForEx:

if (sessionUserLogin == 'True') { 
     $('#myTableId').dataTable({ "bStateSave": false, "bDestroy": true});    
     $('#myTableId').dataTable({ "bStateSave": true }); 
    } 
    else { 
     $("#myTableId").dataTable({ "bStateSave": true }); 
    } 

Как указано выше примере "sessionUserLogin" говорит, если пользователь Войти в систему, если этот флаг (sessionUserLogin) комплектов Правда, я хочу Уничтожьте в предыдущем состоянии и снова инициализируйте таблицу, чтобы продолжить сохранение состояния. Другое условие используется для обработки других обратных передач в системе, как после входа в систему пользователя, я хочу поддерживать состояние таблицы даже после postbacks как и любой DropDown изменить или Сохранение записей.

Мой выше код отлично работает при входе пользователя в систему, я могу очистить состояние таблицы, но я не могу снова инициализировать состояние таблицы.

Я прошел через это URL. Но все еще не в состоянии найти решение.

Пожалуйста, помогите. Заранее спасибо.

+0

http: // datat ables.net/forums/discussion/8154/bstatesave-cookie-when-does-this-reset – Andreas

+0

Я уже просматриваю эту ссылку, но в этой ссылке используется свойство «iCookieDuration», которое устанавливает время истечения срока действия файла cookie, но согласно моему требованию Я хочу удалить файл cookie в случае входа пользователя в систему и хочет его снова сбросить. –

+0

Ответ (7) от пользователя "bennybenben" показывает решение, не вступая в куки. – Andreas

ответ

0

Вы можете попробовать использовать его метод destroy ниже

var table = $('#myTable').DataTable(); 
if (sessionUserLogin == 'True') { 
     table.destroy(); 
     $('#YourTableID').empty(); 
     $('#YourTableID').DataTable({ 
      "bStateSave": true 
     }); 
    } 
    else { 
     $("#YourTableID").DataTable({ "bStateSave": true }); 
    } 

EDIT

var table = $('#myTable').DataTable(); 
if (sessionUserLogin == 'True') { 
     table.destroy(); 
     $('#YourTableID').empty(); 
     table = $('#YourTableID').DataTable({ 
      "bStateSave": true 
     }); 
    } 
    else { 
     table = $('#YourTableID').DataTable({ 
      "bStateSave": true 
     }); 
    } 
+0

Сначала я хочу подтвердить, что «#myTable» = «#YourTableID» Если ДА, то это дает мне всплывающее окно «Предупреждение DataTables (таблица id =« myTableId »): Невозможно повторно инициализировать DataTable». Также он не работает согласно моему требованию. –

+0

Да! Это же ID! Я отредактирую свой ответ !! Проверьте и дайте мне знать! Bdw, какую версию dataTable вы используете? –

+0

Я использовал ваш отредактированный ответ, теперь, когда пользовательский вход в состояние ясности означает, что я могу видеть состояние по умолчанию, такое как разбиение на страницы: 10, хотя это нарушает мою ширину таблицы, но это нормально, я обработаю его. Но теперь, когда я изменил разбивку на страницы по умолчанию: от 10 до 25 и сделаю любую последующую передачу, например, выпадающее меню, код будет перемещаться в другом состоянии вашего кода, и теперь он не сможет поддерживать состояние. Мы чего-то упускаем. –

0

Наконец я в состоянии разобраться в этом, используя код, приведенный ниже, вы можете поместить общие функции за пределами условий:

if (sessionUserLogin == 'True') { 
        function save_dt_view(oSettings, oData) { 
         localStorage.setItem('DataTables_' + window.location.pathname, JSON.stringify(oData)); 
        } 
        function load_dt_view(oSettings) { 
         return JSON.parse(localStorage.getItem('DataTables_' + window.location.pathname)); 
        } 
        function reset_dt_view() { 
         localStorage.removeItem('DataTables_' + window.location.pathname); 
        } 
        reset_dt_view(); 
        $('#myTableId').dataTable({ 
         "bStateSave": true, 
         "fnStateSave": function (oSettings, oData) { save_dt_view(oSettings, oData); }, 
         "fnStateLoad": function (oSettings) { return load_dt_view(oSettings); } 
        }); 
       } 
       else { 
        function save_dt_view(oSettings, oData) { 
         localStorage.setItem('DataTables_' + window.location.pathname, JSON.stringify(oData)); 
        } 
        function load_dt_view(oSettings) { 
         return JSON.parse(localStorage.getItem('DataTables_' + window.location.pathname)); 
        } 
        function reset_dt_view() { 
         localStorage.removeItem('DataTables_' + window.location.pathname); 
        } 
        $('#myTableId').dataTable({ 
         "bStateSave": true, 
         "fnStateSave": function (oSettings, oData) { save_dt_view(oSettings, oData); }, 
         "fnStateLoad": function (oSettings) { return load_dt_view(oSettings); } 
        }); 
       } 
Смежные вопросы