首先,发布的代码有一些错误,例如
dtatype: "json"而不是
datatype: "json"。用“
},});”代替“
}});”在代码末尾和
colNames: ['Stud Name','Year','Date'.'Number']代替
colNames:['StudName','Year','Date','Number']。修复此明显的错误后,您需要更改
jsonmap值。这是您的主要问题。固定代码如下所示:
jQuery("#"+subgrid_table_id).jqGrid({ ... datatype: 'json', colNames: ['Stud Name','Year','Date'.'Number'], colModel: [ {name:'student_name', width:100, jsonmap:"head.student_name"}, {name:'year', width:100, jsonmap:"head.year"}, {name:'date', width:100, jsonmap:"sub.0.date"}, {name:'number', width:100, jsonmap:"sub.0.number"} ], jsonReader: { repeatitems:false, root:"rows" }});您必须修复
root为“
rows”并
jsonmap以 JSON点表示法使用
(请参阅http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#json_dot_notation)。我使用了一种奇怪的表示法,如“
sub.0.number”,因为
sub.0.number在Javascript中它与
sub[0].number。现在可以使用了。
我建议您再考虑一下收到的JSON数据的结构。(请参阅我之前对您的评论):“
sub”元素确实是一个始终只有一个元素的数组,还是您想使用子网格?可能应该将数据从更改
sub:[{"":"", ...}]为sub:{"":"",...}?您想用作行标识符吗?student_name?然后将其添加
id:"head.student_name"到
jsonReader定义或将
key:true属性添加到列的定义
student_name。还是忘记了将其包含在JSON数据中?
还有最后一个建议。如果打开http://trirand.com/blog/jqgrid/jqgrid.html并在树的左侧打开分支“数据映射”
“数据优化”,您将看到一个仅使用数组而不是命名的示例JSON中的元素。这样的数据将具有最小的大小,并且可以更快地从服务器传输到客户端。相反,您的数据具有一些根本不用的字段(例如“
course_description ”)。因此, 如果可以在服务器 代码中 进行任何更改,请 尝试优化数据传输速率。



