kendo 网格 excelExport 的 hideColumn 不工作

kendo Grid excelExport's hideColumn not working

我正试图从 excelExport 中隐藏一列。我尝试了 google 上显示的一些传统方式,例如 e.sender.hideColumn(13)e.sender.hideColumn("bID")grid.hideColumn(13)。但是 none 这对我有用。我也完成了 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;
      }
    }

对于此示例,事件被阻止并再触发一次,隐藏列除外。