我已经编写了以下代码来从数组生成列和列模型,有趣的是,当我在jqgrid中硬编码生成的数组时,如下所示它会生成teh列,但是当将数组放入变量然后将其分配给colModel它不会生成列。为什么这样,我该如何解决这个问题?
完整的代码位于底部
我正在使用http://www.trirand.com/blog/jqgrid/jqgrid.html
的JQGrid" https://cdnjs.cloudflare.com/ajax/libs/jqgrid/4.6.0/js/jquery.jqGrid.min.js"
以下是硬编码代码:
//hard coding the array
$('#myGrid').jqGrid({
datatype: "local",
height: 250,
//colNames:modelArr,
colModel:[{name:' 9/10/2014'}, {name:' 1/1/2014'}, {name:' 2/10/2014'}],
viewrecords: true,
multiselect: true,
caption: "Manipulating Array Data"
});
以下是完整的代码:
var colsArray =[];
var modelArr = [];
$.ajax({
url:'http://localhost:53721/Home/GetPurchases',
dataType:'json',
success:function(data){
colsArray=data;
var str='';
if(data.length > 0 ){
str = data[0].PurchaseDates;
console.log(str);
colsArray = str.split(',');
}
for(var i=0; i < colsArray.length;i++){
var tmp = {name:colsArray[i]};
modelArr[i]=tmp;
}
//console.log(JSON.stringify(modelArr));
},
error:function(){}
});
var d1 = JSON.stringify(modelArr);
console.log(d1);
$('#myGrid').jqGrid({
datatype: "local",
height: 250,
//colNames:modelArr,
colModel:[modelArr], //[{name:' 9/10/2014'}, {name:' 1/1/2014'}, {name:' 2/10/2014'}],
viewrecords: true,
multiselect: true,
caption: "Manipulating Array Data"
});
答案 0 :(得分:0)
当你对它进行硬编码时它正在工作的原因:colModel需要一个数组,但当你试图动态地创建它时,它会以String形式出现。
//use below methods:
// call below functions at grid
----
----
colNames:getColNames(result.colNames), //["Plan_code", "LOB"],
colModel:getColModels(result.colNames),
----
----
//define these function
function getColNames(columndata) {
var keys = [];
for(var key in columndata) {
if (columndata.hasOwnProperty(key)) {
keys.push(columndata[key]);
}
}
return keys;
}
function getColModels(modelData) {
var colNames= getColNames(modelData);
var colModelsArray = [];
for (var i = 0; i < colNames.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);
}
return colModelsArray;
}
答案 1 :(得分:0)
在将colModel指定给数组时删除方括号,因为保持它会生成数组数组。
var myGrid = $("#myGrid").jqGrid({
datatype: "local",
height: 250,
colModel:modelArr,
viewrecords: true,
multiselect: true,
caption: "Manipulating Array Data"
});
这是使用您提供的代码的工作sample。
我还在样本的末尾添加了两行,以显示两个赋值形状之间的差异,如下图所示