我使用以下方法将数据加载到jqgrid中。我无法将 json数据加载到jqgrid中。我将json解析为数组,如 mydata = json。解析(jsondata)。然后我使用数据类型:“local”将此 数组(mydata) 绑定到jqgrid。我的问题是如何将json数据绑定到jqgrid?
$("#datagrid").jqGrid({
datatype: "local",
data: mydata,
colNames:['companyid','company', 'price', 'Change','perchange','LastUpdated'],
colModel:[
{name:'companyid',index:'companyid', width:100,editable:true,editoptions:{size:10}},
{name:'company',index:'company', width:100,editable:true},
{name:'price',index:'price', width:100,editable:true,editoptions:{size:10}},
{name:'Change',index:'Change', width:100,editable:true,editoptions:{size:25}},
{name:'perchange',index:'perchange', width:100, align:"right",editable:true,editoptions:{size:10}},
{name:'LastUpdated',index:'LastUpdated', width:200, align:"right",editable:true,editoptions:{size:10}}
],
rowNum:10,
rowList:[3,6],
loadonce: true,
pager: '#navGrid',
sortname: 'companyid',
sortorder: "asc",
height: 210,
width:600,
onSelectRow: function(id)
{
getID = jQuery("#datagrid").jqGrid('getCell', id, 'companyid')
},
viewrecords: true,
caption:"JQ GRID"
});
JSON格式:
[
{
"company": "test",
"price": 98,
"Change": 8,
"perchange": 8,
"LastUpdated": "2",
"companyid": 2
},
{
"company": "test123",
"price": 1,
"Change": 1,
"perchange": 1,
"LastUpdated": "1",
"companyid": 3
},
{
"company": "abc",
"price": 1234,
"Change": 123,
"perchange": 1,
"LastUpdated": "1",
"companyid": 1
}
]
答案 0 :(得分:7)
首先,您需要在输入数据中定义行的id
。每行(id
)的<tr>
属性将在相应的值中设置。由于您已经companyid
可以发挥作用,因此将key: true
添加到"companyid"
中colModel
列的属性就足够了。
直接从服务器加载日期(包括从文件加载)的问题可以通过添加描述输入数据格式的jsonReader
来解决。由于您使用loadonce: true
,total
,records
和输入数据的page
属性将被忽略,您可以使用以下简单形式的jsonReader
:< / p>
jsonReader: {repeatitems: false, root: function (obj) { return obj; }}
相应的演示是here。
如果您需要从您发布的数据数组中加载数据,您的代码应直接工作(请参阅another demo)。我想在解析JSON数据时还有其他一些问题,但你没有发布相应的代码。
有关id
和key: true
的建议仍在进行中。您可以localReader: {id: "companyid"}
用于第二种情况,也可以在id: "companyid"
中使用同一属性jsonReader
。我个人更喜欢使用key: true
,因为代码易于阅读,并且与所使用的阅读器无关。