JQGrid 'undefined' ошибка - PullRequest
       0

JQGrid 'undefined' ошибка

3 голосов
/ 04 августа 2011

Я получаю ошибку JavaScript при попытке использовать JQGrid:

«Сообщение:« undefined »является нулем или не является объектом»

Когда я отлаживаю на своем сервере, я вижу, что мой вывод JSON выглядит следующим образом: (имеет ли значение, что значение "id" не находится в двойных кавычках?) { "page":"1", "total":"20", "records":"5", "rows":[ {"id":1,"name":"Sam","phone":"732-333-2222"}, {"id":2,"name":"Dan","phone":"000-222-1111"}, {"id":6,"name":"George","phone":"333333"}, {"id":4,"name":"Jerry","phone":"332-333-4444"}, {"id":7,"name":"John","phone":"666666"}, {"id":8,"name":"Tom","phone":"3333"}] } .. и моя страница выглядит так:

<script type="text/javascript">
  jQuery(document).ready(function(){

  jQuery("#list").jqGrid({
  url:'/myUrlPage',
  datatype: 'json',
  mtype: 'GET',
  colNames:['Id', 'Name', 'Phone'],
  colModel :[
    {name:'id', index:'id', width:55},
    {name:'name', index:'name', width:90},
    {name:'phone', index:'phone', width:150, sortable:false} ],
  pager: jQuery('#pager'),
  rowNum:10, rowList:[10,20,30],
  sortname: 'id',
  sortorder: "desc",
  viewrecords: true,
  imgpath: 'themes/basic/images',
  caption: 'My first grid' }); });
</script>

1 Ответ

5 голосов
/ 04 августа 2011

Ваша основная проблема будет решена, если вы включите параметр

jsonReader: { repeatitems: false }

в свой jqGrid.Подробности см. В документации jqGrid .

Более того, я немного изменил ваше демо.Вы можете видеть это здесь .Я рекомендую удалить устаревший imgpath параметр.Вместо этого я рекомендую вам использовать height: 'auto', который в большинстве случаев дает хорошие результаты.Вместо jQuery('#pager') лучше использовать просто '#pager'.Вы должны дополнительно увеличить значение width для некоторых столбцов в случае использования пейджера и viewrecords: true.Я включил в свою демонстрацию оператор jQuery("#pager_left").hide();, который скрывает какой-то блок пейджера, который вы сейчас не используете.Если вы начнете использовать кнопки navigator , удалите строку.

Еще одно замечание о данных JSON, которые вы используете.Значения свойств id, page, total и records могут быть либо строками, либо целыми числами, поэтому "id":1 даст вам те же результаты, что и "id":"1".

. Важно, чтобыпонять, как вы должны заполнить page, total и records.Ваши текущие значения: page = 1, total = 20, records = 5, а ваши данные содержат 6 строк.Все данные не имеют смысла.Jqgrid запросил у сервера дополнительные параметры, которые он добавил к URL-адресу, чтобы получить одну страницу данных с 10 строками на страницу (rowNum:10).Ваш ответ с сервера означает, что ваши данные содержат 5 элементов (записей = 5).Если вы упорядочите данные (5 элементов) на страницах (10 элементов на страницу), у вас будет 20 страниц (всего = 20), и первая из них (страница = 1) будет заполнена данными (6 элементов).Странные значения page, total и records из ваших данных JSON следуют за странными значениями в пейджере на демо :

enter image description here

Я бы порекомендовал вам прочитать ответ , где я пытался описать, почему jqGrid нужен такой странный формат данных JSON.

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