javascript - kendo Grid excelExport 的 hideColumn 不起作用

标签 javascript jquery kendo-ui kendo-grid kendospreadsheet

我试图从 excelExport 中隐藏一列。我尝试了谷歌上显示的一些传统方法,例如 e.sender.hideColumn(13)e.sender.hideColumn("bID")grid.hideColumn (13)。但这些都不适合我。我还完成了 ExportPDF,效果非常好。

这是我附加的 JS 代码,以展示我在做什么。

$("#ALReport").kendoGrid({
        toolbar: ["excel", "pdf"],
        excel: {
            allPages: true,
            fileName: "ALReport" + todayDateFormatted() + ".xlsx",
            proxyURL: "/content",
            filterable: true
        },
        excelExport: function (e) {
            e.sender.hideColumn(12);
            var grid = $("#ALReport").data("kendoGrid");
            grid.hideColumn("Bid");
        },
        pdf: {
            allPages: true,
            filterable: true,
            fileName: "ALReport" + todayDateFormatted() + ".pdf",
            proxyURL: "/content",
            margin: {
                left: 10,
                right: "10pt",
                top: "10mm",
                bottom: "1in"
            }
        },
        pdfExport: function (e) {
            var grid = $("#ALReport").data("kendoGrid");
            grid.hideColumn("Bid");
            $(".k-grid-toolbar").hide();
            e.promise
           .done(function () {
               grid.showColumn("Bid");
               $(".k-grid-toolbar").show();
           });
        },
        dataSource: {
            serverSorting: true,
            serverPaging: true,
            transport: {
                read: getActionURL() + "ALReport....
            },

.....

这是我的js代码。谁能指导我哪里出错了?

最佳答案

导出到 Excel 没有任何效果,因为事件是在收集完所有数据后触发的。对于您的示例,请尝试以下方法:

var exportFlag = false;
    $("#grid").kendoGrid({
         toolbar: ["excel", "pdf"],
         excel: {
          allPages: true,
          fileName: "ALReport" + todayDateFormatted() + ".xlsx",
          proxyURL: "/content",
          filterable: true
        },
       excelExport: function (e) {
        if (!exportFlag) {
          e.sender.hideColumn("Bid");
          e.preventDefault();
          exportFlag = true;
          setTimeout(function () {
              e.sender.saveAsExcel();
          });
      } else {
          e.sender.showColumn("Bid");
          exportFlag = false;
      }
    }

对于此示例,事件被阻止并再次触发,不包括隐藏列。

关于javascript - kendo Grid excelExport 的 hideColumn 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48445236/

相关文章:

jquery - 视差闪烁..位置:fixed is no option

jquery - 悬停事件在 jQuery 中触发两次(进入和离开时)?

angular - Kendo Sortable for Angular - 获取新的索引位置

jquery - 使用 img src swap 添加淡入淡出

jquery - 自定义 Kendo 下拉多选以使用复选框

javascript - ¿调整打开的剑道窗口的大小?

javascript - 为什么 myVar 未定义?

javascript - Angular 4 路由 - 异常 : Uncaught (in promise): Error: Cannot find primary outlet to load 'AppComponent'

javascript - 以逗号分隔的电子邮件 - 添加邮件长度检查(JS 正则表达式)

javascript - Markdown 美化