2012-01-18 8 views
0

У меня возникли проблемы с jqGrid, не отображающим сообщение «Нет записей для просмотра», когда нет записей для просмотра. Я использовал jqGrid довольно широко в своем приложении, с возможностью выбора количества строк, разбивки на страницы и фильтрации. Когда таблицы изначально загружаются, они правильно отображают количество страниц и сообщение «Показать 1-10 из 50» типа rowcount. Если фильтры затем применяются к таблице, данные в таблице обновляются правильно (с использованием источника данных JSON, сгенерированного PHP), и сообщения о количестве страниц и строк обновляются правильно.jqGrid не отображается сообщение «нет записей для просмотра», когда нет записей для просмотра

Единственная проблема возникает, когда применяются фильтры, которые не возвращают никакие строки - когда это происходит, сообщения счетчика страниц и количества строк остаются установленными в их предыдущие значения.

Я проверил JSON Я возвращающегося для пустого набора данных, и он совпадает с JSON из демо-сайта jqGrid, когда нет данных:

{"page":0,"total":0,"records":"0"} 

Я отправил образец в http://www.analyticsseo.com/test. Любая идея, что я делаю неправильно?

+0

Демо использует jqGrid 3.8 (2010-09-21), jQuery 1.3.2 (2009-02-19) и jQuery UI 1.7.3. Более того, если вы готовите демоверсию, вам следует использовать не минимизированную версию jqGrid - в том числе 'jquery.jqGrid.src.js' вместо' jquery.jqGrid.min.js' будет достаточно. – Oleg

+0

@ Oleg: Drupal 6 высвобождается в jQuery v1.3.2. Ужасно, но верно, я боюсь. – Clive

+0

Мой вопрос был в основном о версии jqGrid. Версия 3.8 теперь действительно старая. Кроме того, вы можете использовать 'jquery.jqGrid.src.js' вместо' jquery.jqGrid.min.js'. – Oleg

ответ

1

Я не рекомендую вам сейчас такую ​​старую версию jqGrid, как 3.8. Вы Основная проблема с ответом сервера

{"page":0,"total":0,"records":"0"} 

может быть исправлена, если сервер будет производить

{"page":0,"total":0,"records":"0","rows":[]} 

вместо этого. Ошибка, подобная многим другим ошибкам, теперь исправлена ​​в jqGrid. Существует много новых функций и улучшений производительности.

Кстати, ваша часть сервера использует неправильный заголовок Content-Type в ответе с данными JSON. Правильный Content-Type - application/json, но вместо этого ваш сервер использует text/html; charset=utf-8. Вы можете использовать в Drupal 6, common.inc заявление drupal_set_header('Content-Type: application/json');, чтобы устранить проблему. После такого изменения вы сможете использовать более новую версию jQuery.

В the answer вы найдете ссылки на the link, в котором описано, как вы можете обновить jQuery до новой версии.

+0

Awesome - это отсортировано. Спасибо, Олег! Я тоже изменил тип содержимого и обновляюсь до jqGrid 4.x, как только получаю возможность внести необходимые изменения в наше поколение json. –

+0

@MarkB: Добро пожаловать! – Oleg