【问题标题】:JqGrid: Choose columns for export with ExcelExport?JqG​​rid:使用 ExcelExport 选择要导出的列?
【发布时间】:2013-10-02 06:54:18
【问题描述】:

我正在使用 jqgrid 来显示充满(大学)课程评估的数据库的内容。它由大约 20-25 列和 30k 行组成。

webtool (jqgrid) 的目的是能够过滤数据并将选定的列/行导出到 Excel 和图表。到目前为止,我已经设法让 ExcelExport 正常工作(我正在使用 PHPExcel 来实际创建 xlsx 文件,但并不真正相关),但是发送到服务器的数据不包括任何关于哪些列可见的信息 - 它确实包括过滤器,所以这一切都很好。我正在使用列选择器和过滤器工具栏来显示选定的数据。

基本上,我想将 colModel 与发送到 excelexport 的过滤器一起发送(后来也发送到谷歌图表)。我发现了这种获取 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?还是有更好的办法?

谢谢!

【问题讨论】:

    标签: jquery excel jqgrid


    【解决方案1】:

    终于搞定了,分享解决方案,以防其他人遇到同样的问题。

    首先 - 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;
                            }
                        });
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-28
      • 2019-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-29
      • 2011-04-01
      • 2011-09-10
      相关资源
      最近更新 更多