jqGrid getCell方法在IE8中返回未定义

jqGrid getCell方法在IE8中返回未定义,jqgrid,Jqgrid,在使用jqGrid的getCell方法时,它总是返回IE8中未定义的值。在Mozilla上运行良好 $('#grid').jqGrid('getCell',id,column); //returns undefined in IE8 :( 我应该使用本文中定义的方法吗 最好的方法是什么? 我已经实现了treegrid,并且正在使用jqGrid的4.3.1版本 return ret !== undefined ? ret : cnt===true ? $(cellval).text() : $

在使用jqGrid的getCell方法时,它总是返回IE8中未定义的值。在Mozilla上运行良好

$('#grid').jqGrid('getCell',id,column); //returns undefined in IE8 :(
我应该使用本文中定义的方法吗

最好的方法是什么? 我已经实现了treegrid,并且正在使用jqGrid的4.3.1版本

 return ret !== undefined ? ret : cnt===true ? $(cellval).text() : $.jgrid.htmlDecode($(cellval).html());
我的配置是

var grid = $("#grid").jqGrid({
treeGrid: true,
treeGridModel: 'adjacency',
ExpandColumn: 'businessAreaName',
ExpandColClick : true,
url:'agileProgramme/records.do',
datatype: 'json',
mtype: 'GET',
colNames:['Id'
          , 'Business Area'
          , 'Investment'
          , 'Org'
          , 'Goal'
],
colModel:[
/*00*/          {name:'agileProgrammeId',index:'agileProgrammeId', width:0, editable:false,hidden:true},
/*01*/          {name:'businessAreaName',index:'businessAreaName', width:160, editable:false},
/*02*/          {name:'programmeName',index:'programmeName', width:150, editable:false, classes:'link'},
/*03*/          {name:'org',index:'org', width:50, editable:false, classes:'orgHierarchy', sortable : false},
/*04*/          {name:'goal',index:'goal', width:70, editable:false}
],
treeReader : {
    level_field: "level",
    parent_id_field: "parent", 
    leaf_field: "leaf",
    expanded_field: "expanded"
},
autowidth: true,
height: 240,
pager: '#pager',
sortname: 'id',
sortorder: "asc",
toolbar:[true,"top"],
caption:"TableGridDemo",
emptyrecords: "Empty records",
jsonReader : {
    root: "rows",
    page: "page",
    total: "total",
    records: "records",
    repeatitems: false,
    cell: "cell",
    id: "agileProgrammeId"
}
});   
感谢Oleg的回复。我找到了问题的根本原因。它位于jqGrid的$.unformat方法中

 return ret !== undefined ? ret : cnt===true ? $(cellval).text() : $.jgrid.htmlDecode($(cellval).html());
我把它改成了

return (typeof ret != 'undefined') ? ret : cnt===true ? $(cellval).text() : $.jgrid.htmlDecode($(cellval).html());

实际上,
ret!==未定义的
在ie8中不起作用。有一次,我把它改为
typeof ret!='未定义“
,其工作方式与预期相同

我认为您在错误的位置使用了
getCell
。在
loadComplete
或其他回调函数中使用
getCell
最安全的位置。在这种情况下,您可以确保尝试读取的数据已经在jqGrid中。IE8与其他web浏览器一样慢,因此我只能假设,即使您在错误的位置使用了
getCell
,现代浏览器已经读取了网格包含的内容,因此您的测试是成功的


我是根据你之前发布的代码制作的。它从第一个加载行读取与
getCell
相关的“programmeName”,并显示与
警报相关的“programmeName”。如何在IE8中验证代码是否正常工作。

在单元格处于编辑模式时是否尝试获取单元格值?否“我的所有列都是不可编辑的。
getCell
在IE8中应该可以正常工作。您是否可以在网上发布一个小的问题示例,例如JSFIDLE?非常感谢Oleg的演示。演示在IE8中运行良好。但是,当我粘贴与jqGrid实现中loadComplete方法相同的代码时,它返回未定义的代码。因此,我认为问题在于其他方面。我将尝试调试,并在完成后通知您。Oleg,我找到了问题的根本原因。它位于$.unformat方法中。我已经用答案更新了我原来的问题。@Nehu:你能发布测试数据吗?这些数据可以用来重现问题。我发布的演示使用了
getCell
。应使用哪些数据再现问题?你是否覆盖了未定义的代码?Oleg,我只发现undefined
在IE8中不起作用,但在Mozilla中起作用。根据SO-,我用
typeof ret!='未定义的“
,它工作了。我在jqGrid代码中还看到了一些地方,它们使用变量===undefined,也可以更改。此外,我还有一些列,它们在加载网格时通过setCell方法更新。然后,当我在getCell中获取任何单元格的值时,就会调用$.unformat方法,问题就出在哪里