2011-08-23 45 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中的錯誤。不過,我還沒有確定這一點。