2011-08-23 88 views
0

我有以下的jqGrid与返回一些HTML作为列值的格式化功能:的jqGrid getRowData错误

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导出(我正在使用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 
+0

你曾经为此找到答案吗?我在类似的情况下也有同样的错误。我已经缩小到包含表格标签的html列数据。 – Shift4SMS

回答

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 
    } 
    } 

如果你记住某人是一个JavaScript StringBuilder类和_oJQGUserSettings.aColModel只是我的ColModel的封装那么这也许应该给你根据需要从网格中提取数据。 (然后我将它复制到剪贴板,它允许我将网格的内容直接粘贴到Excel中 - 方便!)

我怀疑在没有向用户显示所有列时会引发getRowData中的错误。不过,我还没有确定这一点。