2016-09-18 64 views
0

我有以下代码来从数组中生成列和列模型,有什么好笑的是,当我在下面的jqgrid中硬编码生成的数组时,它会生成列,但是当把数组放到一个变量中,然后将它分配给colModel它不会生成列。为什么是这样,我如何解决这个问题?为什么我不能将数组分配给jqgrid列?

的完整代码是在使用的jqGrid底部

IM通过http://www.trirand.com/blog/jqgrid/jqgrid.html

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

的原因,它是当你硬编码的工作:但是当你试图使其动态,其未来的字符串colModel需要一个数组。

//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; 
} 
0

当您将colModel分配给数组时,请删除方括号,因为保留它会产生一个数组数组。

var myGrid = $("#myGrid").jqGrid({ 
    datatype: "local", 
    height: 250, 
    colModel:modelArr, 
    viewrecords: true, 
    multiselect: true, 
    caption: "Manipulating Array Data" 
}); 

这里是使用您提供的代码工作sample
我还添加两条线在样品的端部,以显示两种分配形状之间的差异,如图所示下面图像

array vs array of array

相关问题