В своем текущем вопросе вы продолжаете с чрезвычайно экзотическим JSON-форматом входных данных.
Прежде всего, я рекомендую никогда не использовать столбцы, имеющие метасимволы в значении name
свойства в colModel
. В вашем случае вы использовали "name": "First Name"
и "name": "Last Name"
, что может привести к серьезным проблемам. Вам следует заменить свойство name на имена типа "name": "FirstName"
.
Следующая проблема заключается в том, что ваши данные могут быть прочитаны только при использовании свойства jsonmap
colModel
. Таким образом, вы должны определить свойство во входных данных JSON. Кроме того, вы не можете использовать jsonmap
свойство colModel
вместе с datatype: 'local'
. Таким образом, вы должны либо преобразовать информацию из result.mypage.outerwrapper.innerwrapper.rows
части ввода JSON в какой-то более читаемый формат, либо использовать datatype: 'jsonstring'
.
Таким образом, вы можете исправить данные JSON следующим
{
"colModel": [
{
"name": "ID",
"index": "ID",
"width": 60,
"align": "left",
"jsonmap": "cells.0.value"
},
{
"name": "FirstName",
"index": "FirstName",
"width": 140,
"align": "left",
"jsonmap": "cells.1.value"
},
{
"name": "LastName",
"index": "LastName",
"width": 160,
"align": "left",
"jsonmap": "cells.2.value"
}
],
"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"
}
]
}
]
}
}
}
}
и код следующего
$.ajax({
type: "GET",
url: "SK11-4.json",
data: "",
dataType: "json",
success: function (result) {
var columnData = result.mypage.outerwrapper,
columnNames = result.colNames,
columnModel = result.colModel;
$("#dataGrid").jqGrid({
datatype: 'jsonstring',
datastr: columnData,
colNames: columnNames,
colModel: columnModel,
jsonReader: {
root: 'innerwrapper.rows',
repeatitems: false
},
gridview: true,
pager: "Pager",
height: "auto",
rowNum: 5,
rowList: [5, 10, 20, 50],
viewrecords: true
});
}
});
$("#dataGrid").jqGrid('navGrid', '#Pager');
В результате вы получите демо , которое работает.