Проблема с отображением содержимого сетки в jqGrid

#jqgrid

#jqgrid

Вопрос:

Я использую jqGrid. Я загружаю данные в сетку со стороны сервера. Сервер отвечает клиенту следующими данными.

 {
    "page":"1",
    "total":"1",
    "totalrecords":"3",
     "rows":[
         {"name":"query-2","desc":"patton","id":2},
         {"name":"query-=576","desc":"kumar","id":3},
         {"name":"query-=57664","desc":"krishna","id":4}
     ]
}
  

Мой JsonReader и другие данные выглядят следующим образом

   jsonReader : {
      cell : "",
      id : "0"
  },
  datatype : "json",
  mtype : "POST",
  url : "loadData.htm",
  colModel : [ {
          name : "name",
          index : "name",
          sorttype : "String",
          title : false,
          resizable : false,
          align : "left"
      },
      {
          name : "id",
          index : "id",
          hidden:"true"
      },
      {
          name : "desc",
          index : "desc",
          title : false,
          align : "left"
      },
  

Как я уже сказал, я получаю ответ обратно клиенту. Но сетка не может отобразить содержимое, но она отображает пустые данные.

Кстати, я отправляю данные в виде строки. Требуется ли отправлять данные в виде объекта JSON?

Ответ №1:

Вы не включили определение сетки (по крайней мере colModel ). Поэтому я не мог быть уверен в использовании «id». Тем не менее, я полагаю, что вам следует использовать следующее jsonReader

 jsonReader : {
   records: "totalrecords",
   cell: "",
   repeatitems: false
}
  

Кроме того, я рекомендую вам использовать какое-либо другое расширение в качестве HTM для url параметра (в настоящее время у вас есть url: "loadData.htm" ). Важно, чтобы jQuery.ajax используемый jqGrid мог попытаться угадать тип содержимого данных, или веб-сервер мог явно поместить в HTTP-заголовок «Content-Type», другой как «application / json», что может привести к проблемам.

Смотрите демонстрацию здесь.

Комментарии:

1. @Oleg проблема была решена, я внес изменения в программу чтения json, и это сработало. Большое вам спасибо

2. @Oleg Я не могу выполнить сортировку на стороне клиента. Не могли бы вы, пожалуйста, предложить изменения, чтобы я мог выполнять сортировку на стороне клиента?

3. @Phani: Вы можете включить локальную сортировку, разбиение на страницы и фильтрацию с loadonce:true параметром, который я использовал в своей демонстрации. Вы должны понимать, что параметр переключает datatype сетку на ‘local’ после первой загрузки. Если вам потребуется перезагрузить сетку с сервера, вам придется выполнить сброс datatype:'json' перед перезагрузкой сетки. Просто найдите loadonce:true , чтобы прочитать дополнительную информацию.

4. @Oleg Я даже пробовал этот подход, но я не могу использовать подкачку с этим. Допустим, я использую onPaging : function() { $(this). setGridParam({тип данных:’json’}); }

5. @Phani: Извините, но я не понимаю, что вы на самом деле хотите сделать. Сортировка на стороне клиента имеет смысл, только если сервер возвращает все данные сетки (для всех страниц). Только в этом случае вы увидите правильную страницу данных после локальной сортировки. Но в этом случае вам не нужно использовать onPaging .