0
我已經編寫了下面的代碼來顯示JQGrid表中的數據並使用export to excel選項來獲取jqgrid加載的數據在excel表單中。但是導出爲excel的選項在Chrome和Firfox中正常工作,但在JQGrid中不能正常工作。jqgrid + jsp:導出到Excel不工作在IE中
{
var sampleJson = "";
var jsonObj;
function jQGridData(data) {
sampleJson = data.toString();
jsonObj = JSON.parse(sampleJson);
$(document).ready(function() {
var grid = $("#list");
$("#list").jqGrid({
datatype: "local",
data: jsonObj.data,
autoheight:true,
shrinkToFit: true,
colNames:['ID', 'NAME','DESCRIPTION', 'SCORE','STATUS'],
colModel:[
{name:'column1',index:'column1', sorttype:"text", align:"left",sortable:true,editable:true,width:60},
{name:'column2',index:'column2', sorttype:"text",align:"text",editable:true,width:310},
{name:'column3',index:'column3',sorttype:"text",align:"text",editable:true,width:600},
{name:'column4',index:'column4', align:"left",sorttype:"text",editable:true,width:90},
{name:'column5',index:'column5', align:"left",sorttype:"text",editable:true,width:100}
],
search:true,
pager:'#pager',
jsonReader: {cell:""},
rowNum: 8,
height:"auto",
multiselect:true,
imgpath: 'css/images/',
rowList: [8, 16, 24, 32,40],
sortname: 'id',
sortorder: 'asc',
viewrecords: true,
loadComplete: function() {
ModifyGridDefaultStyles();
}
});
$("#grid").jqGrid('setGridParam', {ondblClickRow: function(rowid,iRow,iCol,e){alert('double clicked');}});
$("#list").jqGrid('navGrid','#pager',{add:false,edit:false,del:false,search:true,refresh:true}
).navButtonAdd('#pager', {
id:"ExportToExcel",
caption: "Export to Excel",
buttonicon: "ui-icon-disk",
onClickButton: function(){
exportGrid();
},
position: "last"
}).navButtonAdd('#pager',{
id:"email_address",
caption:"EMAIL ",
buttonicon:"ui-icon-mail-closed",
onClickButton: function(){
sendMail();
},
position:"last"
}).navButtonAdd('#pager', {
caption: "Filter",
title: "Toggle Searching Tool bar",
buttonicon: 'ui-icon-pin-s',
onClickButton: function() {
this.toggleToolbar();
if ($.isFunction(this.p._complete)) {
this.p._complete.call(this);
fixPositionsOfFrozenDivs.call(this);
}
}
});
grid.jqGrid('filterToolbar',{stringResult:true, searchOnEnter:false, defaultSearch:"cn"});
$grid[0].toggleToolbar();
$('#list').closest(".ui-jqgrid-bdiv").css({"overflow-y" : "scroll"});
});
}
function sendMail() {
var link = 'mailto:[email protected]?subject=Message from '
+document.getElementById('email_address').value
+'&body='+document.getElementById('email_address').value;
window.location.href = link;
}
function ModifyGridDefaultStyles() {
$('#' + "list" + ' tr').removeClass("ui-widget-content");
$('#' + "list" + ' tr:nth-child(even)').addClass("evenTableRow");
$('#' + "list" + ' tr:nth-child(odd)').addClass("oddTableRow");
}
function exportGrid()
{
var grid = "#list";
var mya=new Array();
mya=$(grid).getDataIDs(); // Get All IDs
var data=$(grid).getRowData(mya[0]); // Get First row to get the labels
var colNames=new Array();
var ii=0;
for (var i in data){colNames[ii++]=i;} // capture col names
var html="";
var columnNames = $(grid).jqGrid('getGridParam','colNames');
for(i=0;i<columnNames.length-1;i++)
{
html = html + columnNames[i+1]+"\t";
}
html=html+"\n";
for(i=0;i<mya.length;i++)
{
data=$(grid).getRowData(mya[i]); // get each row
for(j=0;j<colNames.length;j++)
{
html=html+data[colNames[j]]+"\t"; // output each column as tab delimited
}
html = html + "</tr>"; // output each row with end of line
}
html = html + "</table></body></html>"; // end of line at the end
window.open('data:application/vnd.ms-excel,' + $('#grid_table').html());
e.preventDefault();
Response.AddHeader("Content-Disposition", "attachment;filename=download.xls");
}
}
能夠在實現從jqGrid的選項在IE中導出到Excel的功能,而無需編寫任何任何控制器調用這個任何人的幫助。
非常感謝你的幫助@amighty,我所用IFRAME代碼從您的文章,它是工作。也可以請幫助是否有可能爲excel文件中導出的數據設置樣式? –