[英]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.