我想使用下面的json形成一个jqgrid,下面的json可能会经常更改。
{“行值”:[
{
“ company”:“ test”,
“价格”:98,
“更改”:8
“ perchange”:8
“ LastUpdated”:“ 2”,
“ companyid”:2
},
{
“ company”:“ test123”,
“价格”:1,
“更改”:1,
“ perchange”:1,
“ LastUpdated”:“ 1”,
“ companyid”:3
},
{
“ company”:“ abc”,
“价格”:1234,
“更改”:123,
“ perchange”:1,
“ LastUpdated”:“ 1”,
“ companyid”:1
}
]}
这是我的代码:
$("#table_div"+chartId).empty().jqGrid({
datatype:'json',
data: data,
jsonReader: {
repeatitems: false,
},
colNames: getColNames(data),
colModel: getColModels(data),
rowNum:50,
rowList: [50, 100, 150, 200],
autowidth: true,
height: '100%',
shrinkToFit: false,
gridview: true,
autoencode: true,
sortorder: "asc",
viewrecords: true,
ignoreCase: true,
hoverrows: true,
caption: title
});
function getColNames(data) {
var keys = [];
for(var i=0;i<data.rowValue.length;i++){
for(var key in data.rowValue[i]) {
if (data.rowValue[i].hasOwnProperty(key)) {
keys.push(key);
}
}
break;
}
return keys;}
function getColModels(data) {
var colNames= getColNames(data);
var colModelsArray = [];
for (var i = 0; i < data.rowValue.length; i++) {
var str;
if (i === 0) {
str = {
name: colNames[i],
index:colNames[i],
key:true,
editable:true
};
} else {
str = {
name: colNames[i],
index:colNames[i],
editable:true
};
}
colModelsArray.push(str);
}
console.log(colModelsArray)
return colModelsArray;}
我成功地获得了任何方式的专栏。但是我在获取同名模特方面有问题。
我是JavaScript的新手。任何帮助,将不胜感激。
注意:rowValue将动态更改
提前致谢!!
最佳答案
---- ColName -----
var colName = Object.keys(data [“ rowvalue”] [0]);
---- ColModel ----
var colModel = [];
for(var i=0; i<colName.length; i++) {
var tempColModel = {};
tempColModel["name"] = colName[i];
tempColModel["id"] = colName[i];
tempColModel["width"] = 90;
colModel.push(tempColModel);
}
请根据您的条件在ColModel中添加其余属性。