#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
.