I'm new to jqgrid finally i've setup a grid. Suppose i need to setup jsonReader so that the grid knows where to get my grid-data in the json return. However i got blank cells after trying for days.
Here is my grid:
jQuery("#list48").jqGrid({
url: 'dbtest.aspx/get_offsite_history2',
datatype: "json",
mtype: 'POST',
ajaxGridOptions: { contentType: "application/json" },
serializeGridData: function(postData) {
return JSON.stringify(postData);
},
jsonReader: {
root: function(obj) { alert(JSON.stringify(obj.d)); return obj.d; },
repeatitems: false
},
height: 'auto',
rowNum: 30,
rowList: [10, 20, 30],
colNames: ['name', 'start_date', 'duration', 'offsite_cat'],
colModel: [
{ name: 'name', index: 'name', width: 80, align: 'left', editable: true, edittype: 'text' },
{ name: 'start_date', index: 'start_date', width: 120, align: 'left', editable: true, edittype: 'text' },
{ name: 'duration', index: 'duration', width: 120, align: 'left', editable: true, edittype: 'text' },
{ name: 'offsite_cat', index: 'offsite_cat', width: 120, align: 'left', editable: true, edittype: 'text'}],
pager: "#plist48",
viewrecords: true,
sortname: 'name',
caption: "Grouping Array Data",
gridview: true
});
This is the server return from url dbtest.aspx/get_offsite_history2:
{"d":"[{\"name\":\"A\",\"start_date\":\"B\",\"duration\":\"C\",\"offsite_cat\":\"D\"}]"}
i suppose to get the result by setting "root: 'd'" but i got 64 blank rows for that...
look for comments... many thanks
I think the problem is the structure of your returned json data.
Below is one that I use :
You may need to add a colModel for id to uniquely identify each row.
e.g.
Hope that helps.
The reason of your problem is the bug in your server code. You make serialization to JSON twice. After deserializing of
d
property of the server response you get still JSON string (!!!) instead of object. Typical error is manual usage ofJavaScriptSerializer.Serialize
in the web method. One should return the object itself instead of the string which is the result of serializing.Without modifying of your current server code you can fix the problem by usage of
or (if you use
loadonce: true
) justBecause your current server code seems not implemented the paging of data you should increase
rowNum
to some large enough value likerowNum: 10000
or to useloadonce: true
.UPDATED: You can find here modified demo which works. It displays
after the
alert
message.