2017-06-21 85 views
1

我想使用下面的json形成一个jqgrid,并且下面的json可能会频繁更改。如何动态绑定和JqGrid中的行和列?

{ “rowvalue”:[ { “公司”: “测试”, “价格”:98, “更改”:8, “perchange”:8, “LASTUPDATED”: “2” , “companyid”:2 }, { “公司”: “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;} 

我在获取任何方法方面取得了成功。但我在获取colmodels时遇到问题。 我是javascript中的新手。任何帮助,将不胜感激。 注意:rowValue会动态变化 在此先感谢!

回答

0

---- 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中添加其他属性。

+0

我用另一种方法导出数据..我有另一个问题在Jqgrid已被讨论在许多论坛,但我没有得到一个清晰的看法。我正在导出过滤的数据,但它仅从页面1导出,但不能从其他页面导出。任何人都可以帮忙吗? – Xyz

+0

我也有解决方案,而不是使用jqgrid下载数据,你可以从下载按钮调用一个函数,以及你在jqgrid中显示的变量中的任何数据,下载整个数据。 – Shiladitya

+0

将网格的整个数据存入“数据”变量,您可以使用它来导出数据。 – Shiladitya