JQGrid getRowData错误

JQGrid getRowData错误,jqgrid,Jqgrid,我有以下带有formatter函数的JQ网格,该函数返回一些HTML作为列值: jQuery("#list").jqGrid({ url:jsonUrl, datatype: 'json', mtype: 'GET', colNames:['Id', 'Name', 'Phone', 'Action'], colModel :[ {name:'id', index:'id', sortable:true},

我有以下带有formatter函数的JQ网格,该函数返回一些HTML作为列值:

jQuery("#list").jqGrid({ 
      url:jsonUrl, 
      datatype: 'json', 
      mtype: 'GET', 
      colNames:['Id', 'Name', 'Phone', 'Action'], 
      colModel :[ 
         {name:'id', index:'id', sortable:true}, 
         {name:'name', index:'name', sortable:true},
         {name:'phone', index:'phone', sortable:false},

         {name:'details', index:'details', sortable: false,
              formatter:function(cellvalue,options,rowObject){
                  return "<p class='trigger'><a href='#'><img src='/images/actions.jpg' /></a></p><div class='toggle_container'><div class='block'><table class='action'><tr><td><a href='#'><img src='/images/open.gif' /></a></td><td><a href='#'><img src='/images/edit.gif' /></a></td><td><a href='#'><img src='/images/delete.gif' /></a></td></tr></table></div></div>"
              }
          }
         ] 
我得到一个JavaScript错误:

 Message: 'l.p.colModel[...].name' is null or not an object
 URI: http://www.ok-soft-gmbh.com/jqGrid/jquery.jqGrid-4.1.2/js/jquery.jqGrid.min.js

我想我可能对你的问题有一个答案——或者至少有一个解决办法就足够了。看看下面的javascript。这是我用于从网格中提取数据的方法:

var sCell;
var aDataIDs = $Grid.getDataIDs();

//Loop through table rows
for (var i = 0; i < aDataIDs.length; i++) {

  try {
    //Get row
    var oRow = $Grid.getRowData(aDataIDs[i]);

  }
  catch (e) {
    //If problem then fall back to this
    for (var j = 0; j < _oJQGUserSettings.aColModel.length; j++) {
      if (j > 0) sb.append('\t'); //Add tab

      //Get cell data
      sCell = $Grid.getCell(aDataIDs[i], _oJQGUserSettings.aColModel[j].name);

      sb.append(sCell);  //Add data
    }
  }
var-sCell;
var aDataIDs=$Grid.getDataIDs();
//循环表行
对于(var i=0;i0)sb.append('\t');//添加选项卡
//获取单元格数据
sCell=$Grid.getCell(aDataIDs[i],oJQGUserSettings.aColModel[j].name);
sb.append(sCell);//添加数据
}
}
如果您记住sb是一个javascript stringbuilder类,而_oJQGUserSettings.aColModel只是我对ColModel的封装,那么这可能会为您提供从网格中提取所需数据的功能。(然后我将其复制到剪贴板,这样我就可以将网格的内容直接粘贴到Excel-handy!)


我怀疑getRowData中存在一个错误,当并非所有列都显示给用户时会抛出该错误。但是我还没有确定这一点。

您是否找到过答案?我在类似情况下也遇到了同样的错误。我已将其缩小到包含表标记的html列数据。
var sCell;
var aDataIDs = $Grid.getDataIDs();

//Loop through table rows
for (var i = 0; i < aDataIDs.length; i++) {

  try {
    //Get row
    var oRow = $Grid.getRowData(aDataIDs[i]);

  }
  catch (e) {
    //If problem then fall back to this
    for (var j = 0; j < _oJQGUserSettings.aColModel.length; j++) {
      if (j > 0) sb.append('\t'); //Add tab

      //Get cell data
      sCell = $Grid.getCell(aDataIDs[i], _oJQGUserSettings.aColModel[j].name);

      sb.append(sCell);  //Add data
    }
  }