簡體   English   中英

JqG​​rid:選擇要使用ExcelExport導出的列?

[英]JqGrid: Choose columns for export with ExcelExport?

我正在使用jqgrid顯示充滿(大學)課程評估的數據庫的內容。 它由大約20-25列和30k行組成。

Webtool(jqgrid)的目的是能夠過濾數據並將選定的列/行導出為ex​​cel和圖表。 到目前為止,我已經設法使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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM