JQGrid getRowData错误
我有以下带有formatter函数的JQ网格,该函数返回一些HTML作为列值: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},
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
}
}