JQGrid getRowData错误

时间:2011-08-23 14:02:08

标签: jqgrid

我有以下带有格式化程序功能的JQ-Grid,它返回一些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>"
              }
          }
         ] 

稍后,我尝试获取所有列/行数据并将其导出到Excel。 JQ-Grid中是否有一个功能允许您导出Excel / PDF(fyi - 我正在使用JSP / JAVA)。

当我尝试做这样的事情时:

 var mya=new Array();
 mya=$("#list").getDataIDs();  // Get All IDs
 var data=$("#list").getRowData(mya[0]);     // Get First row to get the labels

我收到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

1 个答案:

答案 0 :(得分:1)

我想我可能会对你的问题有一个答案 - 或者至少是一个足够的解决方法。看看下面的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
    }
  }

如果你记住sb是一个javascript stringbuilder类而_oJQGUserSettings.aColModel只是我对ColModel的封装,那么这应该可以根据需要为你提供从网格中提取数据所需的内容。 (然后我将它复制到剪贴板,它允许我直接将网格内容粘贴到Excel中 - 方便!)

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