Плагин Datatables Jquery не поддерживает инъекцию? - PullRequest
0 голосов
/ 04 ноября 2011

Я использую jQuery ajax для возврата данных в виде html в пустой тег <table id=table01></table>, используя

$('table #table01').html(data);

Таблица правильно отображается и заполняется данными, но когда я хочу отсортировать столбцы, используя заголовок столбца, я получаю сообщение об ошибке Нет данных, доступных в таблице

Я что-то не так делаю, или плагин DataTables для jQuery не работает с внедренным html.

Спасибо

Ответы [ 3 ]

4 голосов
/ 04 ноября 2011

Если вы хотите добавить данные в таблицу после того, как они уже были инициализированы, вам нужно использовать API: http://datatables.net/api#fnAddData.Это позволяет DataTables видеть, что вы добавляете, и обрабатывать его соответствующим образом.Непосредственное внедрение HTML не будет работать, потому что DataTables не знает, что это произошло, - поэтому он попытался представить то, что он знает, при перерисовке (в данном случае данных нет).

Альтернативаинициализируйте таблицу после того, как вы настроите после того, как вы выполните HTML-инъекцию (возможно, уничтожив таблицу, как предлагает olivieradam666).

Allan

2 голосов
/ 04 ноября 2011

То, что я знаю о тебе, не вводит html. Это, конечно, не предполагаемый способ использования плагина, поскольку он по существу побеждает цель. Он говорит «нет данных», потому что вы буквально не предоставили плагину никаких данных для хранения в кеше и возможности сортировки, разбивки на страницы и т. Д. Все, что вы сделали, - это добавили html в тег таблицы (а не в datatable). Если вы используете встроенную функциональность ajax в datatables, вы просто возвращаете нужные данные в таблицу как json (или другой формат, если вы предоставляете синтаксический анализ), и datatables автоматически преобразует их как в объекты dom для отображения, так и в объекты jquery для сортировки и например.

Это также значительно облегчает вашу жизнь.

P.S. когда вы используете функциональность ajax плагина, он фактически оборачивает вашу таблицу в кучу элементов div и добавляет к ней несколько элементов, так что заголовок, на который вы щелкаете, не является технически «привязанным» к вашей таблице, которую вы объявили в HTML, если это имеет смысл? Он привязан к кешу объектов, которые таблицы данных используют для визуализации таблицы.

вот пример того, как использовать ajax и dt http://datatables.net/release-datatables/examples/data_sources/ajax.html

1 голос
/ 04 ноября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...