I have defined the jqgrid column name and column model arrays in the JSON response so that I can dynamically populate the jqgrid headers.
Problem that I'm having
Data is not getting displayed in the grid. How do I map cells.value
to each column?
JSON
{
"colModel": [
{
"name": "ID",
"index": "ID",
"width": 60,
"align": "left"
},
{
"name": "First Name",
"index": "First Name",
"width": 140,
"align": "left"
},
{
"name": "Last Name",
"index": "Last Name",
"width": 160,
"align": "left"
}
],
"colNames": [
"ID",
"First Name",
"Last Name"
],
"mypage": {
"outerwrapper": {
"page":"1",
"total":"1",
"records":"1",
"innerwrapper": {
"rows":[
{
"id":"1",
"cells":
[
{
"value":"12345"
},
{
"value":"David"
},
{
"value":"Smith"
}
]
}
]
}
}
}
}
JQGrid Definition
$(document).ready(function () {
$.ajax({
type: "GET",
url: "jqgrid.json",
data: "",
dataType: "json",
success: function(result){
var columnData = result.mypage.outerwrapper.innerwrapper.rows,
columnNames = result.colNames,
columnModel = result.colModel;
$("#dataGrid").jqGrid({
jsonReader: {
root: "result.mypage.outerwrapper.innerwrapper.rows",
cell: "result.mypage.outerwrapper.innerwrapper.rows.cells",
repeatitems: true,
page: "result.mypage.outerwrapper.page",
total: "result.mypage.outerwrapper.total",
records: "result.mypage.outerwrapper.records"
},
datatype: 'local',
data: columnData,
colNames: columnNames,
colModel: columnModel,
gridview: true,
pager: "Pager",
height: "auto",
rowNum: 5,
rowList: [5, 10, 20, 50],
viewrecords: true
});
}
});
$("#dataGrid").jqGrid('navGrid','#Pager');
});