我有来自服务器的JSON响应,我试图绑定到JQgrid。但是,响应是JSON字符串有" dot"作为对象名称的一部分。我无法让JQGrid与" dot"
以下是我面临的问题http://jsfiddle.net/sharathchandramg/rpdfrb0L/2/
的示例小提琴$("#grid").jqGrid({
data: data,
datatype: "local",
height: 250,
colNames: ['Name', 'Cluster', 'Location'],
colModel: [{
name: 'name',
width: 120
}, {
name: 'metrics.cluster.first.value',
width: 60,
jsonmap: function (obj) {
return obj.metrics['cluster.first'].value
}
}, {
name: 'metrics.location-latitude.value',
width: 60
}, ],
caption: "Example"
});
如图所示,我无法绑定属性" cluster.first"甚至在使用jsonmap时。如果属性名称是" location-latitude"网格工作正常。
让我知道我做错了什么。
答案 0 :(得分:2)
原因很简单。如果在jqGrid 4.6中使用egen group = group(id date2)
bysort id (group): gen clust2 = sum(group != group[_n-1])
,则将忽略属性jsonmap
。我更改了free jqGrid中的行为(请参阅the wiki)。因此,一种可能的解决方案是使用免费的jqGrid 4.8或更高版本而不是jqGrid 4.6。
解决问题的另一种简单方法是使用datatype: "local"
。您可以验证
datatype: "jsonstring"
见http://jsfiddle.net/OlegKi/rpdfrb0L/5/。您还可以看到我更改了所有$("#grid").jqGrid({
datastr: data,
datatype: "jsonstring",
height: "auto",
colNames: ['Name', 'Cluster', 'Location'],
colModel: [{
name: 'name',
width: 120
}, {
name: 'metrics_cluster_first_value',
width: 60,
jsonmap: function (obj) {
return obj.metrics['cluster.first'].value
}
}, {
name: 'metrics_location_latitude_value',
jsonmap: 'metrics.location-latitude.value',
width: 60
}],
caption: "Example"
});
项的name
属性,以便内部没有点。我建议始终遵守规则。