我有以下带有格式化程序功能的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
答案 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中存在一个错误,当没有向用户显示所有列时会抛出该错误。但是我还没有确定这一点。