[英]JqGrid: Choose columns for export with ExcelExport?
我正在使用jqgrid显示充满(大学)课程评估的数据库的内容。 它由大约20-25列和30k行组成。
Webtool(jqgrid)的目的是能够过滤数据并将选定的列/行导出为excel和图表。 到目前为止,我已经设法使ExcelExport正常工作(尽管我使用PHPExcel实际创建了xlsx文件,但并不真正相关),但是发送到服务器的数据不包括可见的列的任何内容-它确实包括过滤器,所以这一切都很好。 我正在使用列选择器和filtertoolbar来显示选定的数据。
基本上,我想将colModel与发送到excelexport的过滤器一起发送(以后再发送到Google图表)。 我发现这种获取colModel的方式:
var colModel = $("#list").jqGrid('getGridParam','colModel');
这是excelexport函数在jqgrid源代码中的样子:
excelExport : function(o) {
o = $.extend({
exptype : "remote",
url : null,
oper: "oper",
tag: "excel",
exportOptions : {}
}, o || {});
return this.each(function(){
if(!this.grid) { return;}
var url;
if(o.exptype === "remote") {
var pdata = $.extend({},this.p.postData);
pdata[o.oper] = o.tag;
var params = jQuery.param(pdata);
if(o.url.indexOf("?") !== -1) { url = o.url+"&"+params; }
else { url = o.url+"?"+params; }
window.location = url;
}
});
我尝试编辑此函数,但是没有结果(是否可以编辑此函数?),所以尽管我会进行自己的Ajax调用,但是我真的不知道从哪里开始。 编写自己的呼叫时如何访问postData? 或者,还有更好的方法?
谢谢!
终于让它起作用了,在其他人遇到相同问题的情况下共享解决方案。
首先-不能以这种方式使用ajax来生成文件,所以这不是可行的方法。
我最终要做的是使用与源代码中的功能非常相似的功能,并将可见列添加为参数“列”。
将按钮添加到寻呼机:
$grid.jqGrid('navButtonAdd', '#pager',
{caption: '',
title: 'Export to Excel',
onClickButton: function(e) {
创建可见列的数组:
var cols = [];
var mycolModel = $("#list").getGridParam("colModel");
$.each(mycolModel, function(i) {
if (!this.hidden) {
cols.push(this.name);
}
});
将数组与jqgrid无论如何都会发送的参数一起添加到参数中(例如过滤器,搜索,sidx等):
var pdata = $grid.jqGrid('getGridParam', 'postData');
var colsJ = JSON.stringify(cols);
var params = jQuery.param(pdata);
params = params + "&columns=" + colsJ;
将参数发送给您的excelexporter:
var url = 'ExcelExport.php' + "?" + params;
window.location = url;
}
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.