2016-03-02 2 views
1

Я пытаюсь реализовать веб-приложение с помощью Basic и Advanced Search, и я использую datatable 1.10 и jquery 2.2 для отображения результатов поиска. У меня возникли проблемы с методом destroy, и я надеюсь, что некоторые из вас смогут помочь мне найти решение, заранее заблаговременно всем за вашу помощьФункция datatable destroy не работает должным образом

Позвольте мне немного пояснить мой проект, логическая логика, цель и проблема:

У меня есть одна таблица с 5 столбцами, как вы можете видеть на моем jsfiddle. У меня также есть глобальная переменная «table» для обработки данных (DT) после ее создания. Я объявила функцию loadSearchData для загрузки параметров для вызова Ajax другой глобальной переменной. В событии клика двух кнопок поиска я проверяю, существует ли DT, и я его уничтожаю, а затем вызываю функцию initializeDataTable. Моя идея состояла в том, чтобы уничтожить существующий DT и создать новый каждый раз, когда нажаты кнопки «Поиск». Однако это не работает, и поведение «странно»:

Первый раз, когда я вводите критерии поиска и нажимаю поиск, отлично работает Если я модифицирую критерии поиска и снова нажимаю поиск, то получаю ошибку веб-страницы

«линия: 1 Ошибка: Невозможно получить свойство„стиль“неопределенной или нулевой ссылки»

тогда, если не отлаживать и нажмите кнопку поиска снова, то он отлично работает снова!

Код:

  //BASIC SEARCH 
      $('#btnBasicSearch').on('click', function() { 

       $("#partialSearch").removeAttr("hidden"); 

       loadSearchData('basicSearch'); 

       if ($.fn.DataTable.isDataTable('#tbDocumentsList')) { 
        table.destroy();      
       } 

       initializeDataTable(searchParameters); 
      }); 

      //ADVANCED SEARCH 
      $("#btnSearch").on('click', function() { 

       $("#partialSearch").removeAttr("hidden"); 
       loadSearchData('advancedSearch'); 
       jQuery.ajaxSettings.traditional = true; 

       if ($.fn.DataTable.isDataTable('#tbDocumentsList')) { 
        table.destroy();      
       } 

       initializeDataTable(searchParameters); 

      }); 

Я уверен, что есть лучший способ сделать это, это мой первый раз, используя DataTables и, возможно, я что-то не хватает, кто-нибудь есть идеи?

Вы можете увидеть полный jsfiddle здесь

https://jsfiddle.net/dalps/gxgLdo03/

Я также спросил на DataTable форуме:

http://datatables.net/forums/discussion/33563/datatable-destroy-function-not-working-as-expected#latest

заранее спасибо

dalps

ответ

0

Ну, я получил мой ответ на DataTable форуме: мой HTML таблица имеет 5 столбцов и на свойстве «columndefs» У меня есть следующие:

«мишеней»: 5, «данных»: «активный», «visible»: false

Поскольку индексирование столбца начинается с нуля, я ссылался на столбец, который не существует, решение, добавьте новый столбец в таблицу

Смежные вопросы