在使用Ext.grid.GridPanel时,为了方便导出表格中数据。使用了window.open在新窗口中打开PDF,XLS格式的结果,在firefox2.0.15,3.0.1下正常,在IE6,IE7下返回一个空白页面,从服务器控制台可以看到服务器端是执行了报表导出动作,换成链接方式<a href="export.action?xxx=xxx"> 则可以正确显示结果。
window.open(url) 与 <a href="url" >有这么大区别?export.action是将grid中数据已报表形式显示出来,并可选择导出文件类型。
代码如下
var grid = new Ext.grid.GridPanel({
border:false,
viewConfig: {
forceFit:true
},
store: store,
cm: cm,
sm:gridsm,
loadMask: true,
bbar: new Ext.PagingToolbar({
pageSize: 20,
store: store,
displayInfo: true,
items:['-',{
text:'查询范围',
menu:contactGridFilterMenu
},
filterField,
filterButton,
clearButton,
'-',
{
iconCls:'icon-pdf',
tooltip:'将表格导出为PDF文件',
handler:function(){
var s='';
if(store.lastOptions){
s+=Ext.urlEncode(store.lastOptions);
}
if(store.baseParams){
if(s===''){
s+=Ext.urlEncode(store.baseParams);
}else{
s+='&';
s+=Ext.urlEncode(store.baseParams);
}
}
if(''!==s){
s = '?'+s;
}
window.open("export.action"+s,"_blank");
}
},{
iconCls:'icon-xls',
tooltip:'将表格导出为XLS文件',
handler:function(){
var s='';
if(store.lastOptions){
s+=Ext.urlEncode(store.lastOptions);
}
if(store.baseParams){
if(s===''){
s+=Ext.urlEncode(store.baseParams);
}else{
s+='&';
s+=Ext.urlEncode(store.baseParams);
}
}
if(''===s){
s = '?type=xls';
}else{
s = '?' + s +'&type=xls';
}
window.open("export.action"+s);
}
}
]
})
});