Kendo ui 单击excel按钮多次下载剑道网格excel文件

Kendo ui 单击excel按钮多次下载剑道网格excel文件,kendo-ui,grid,Kendo Ui,Grid,我试图在导出到excel时显示隐藏列。我正在使用下面的函数来实现功能。问题是它正在下载多个excel文件,因为它多次调用“Insurance/GetInsuranceDisferences”的触发调用…如果我删除自定义代码以导出隐藏列,则只需下载一次excel即可。让我知道我做错了什么 excelExport: function (e) { if (exportFlag) { e.sender.showC

我试图在导出到excel时显示隐藏列。我正在使用下面的函数来实现功能。问题是它正在下载多个excel文件,因为它多次调用“Insurance/GetInsuranceDisferences”的触发调用…如果我删除自定义代码以导出隐藏列,则只需下载一次excel即可。让我知道我做错了什么

 excelExport: function (e) {
                    if (exportFlag) {

                        e.sender.showColumn("INS_TYPE");
                        e.sender.showColumn("ErollementYear");

                        e.preventDefault();
                        exportFlag = true;
                        setTimeout(function () {
                            e.sender.saveAsExcel();
                        });
                    } else {
                        e.sender.hideColumn(0);
                        exportFlag = false;
                    }
                }

Here is complete code for binding

var baseUrl = $('base').attr('href');
var gridReadUrl = baseUrl + 'Insurance/GetInsuranceDisputes';

var exportFlag = true;
$(document).ready(function () {

    InsuranceGrid.Initialize('#ActiveGrid');
    var grid = $("#ActiveGrid").data("kendoGrid");


});

var InsuranceGrid = function () {
    var initialize = function () {

        var grid = $("#ActiveGrid"); //$('div', container);

        var filterOption = {
            extra: false,
            operators: {
                string: {
                    eq: "Is Equal To",
                    startswith: "Starts With",
                    contains: "Contains",
                    endswith: "Ends With"
                }
            }
        };

        var columnOptions = [

               {
                   field: "INS_NO",
                   title: "INS#",
                   width: 100,
                   filterable: true,
                   editable: false,
                   locked: true
               },
             {
                 field: "INS_TYPE",
                 title: "Insurance Type",
                 width: 250,
                 filterable: false,
                 hidden: true
             },
              {
                  field: "ErollementYear",
                  title: "EnrollmentYear",
                  width: 200,
                  filterable: false,
                  editable: false,
                  hidden: true
             },

        ];
 var gridOptions = {
            toolbar: ["excel"],
            excel: {
                fileName: "InsuranceList.xlsx",
                allPages: true,
                filterable: true
            },
            dataSource: {
                error: function (e) {
                    if (e.errors != false) {
                        alert("Error:" + e.errors);
                        grid.one("dataBinding", function (e) {
                            e.preventDefault(); // cancel grid rebind
                        });
                    }
                },
                transport: {
                    read: {
                        url: gridReadUrl,
                        type: "POST",
                        complete: function (jqXHR, textStatus) {
                            //alert('ere');
                        },
                        data: function () {

                            return {};
                        }
                    },
                },
                schema: {
                    data: "data",
                    total: "total",
                    model: {
                        id: "ID",
                        fields: {
                            ID: {
                                editable: false,
                                type: "number"
                            },
                            INS_NO: {
                                editable: false,
                                type: "string"
                            },
                            INS_TYPE: {
                                editable: true,
                                type: "string"
                            },
                            ErollementYear: {
                                editable: true,
                                type: "string"
                            },

                       }

                    }
                },
                serverPaging: true,
                serverSorting: true,
                serverFiltering: true
            }
            , dataBound: dataBoundGrid 
            , columns: columnOptions,

            height: 650,
            sortable: {
                mode: "single",
                allowUnsort: false
            },   
            filterable: true,
            selectable: true,
            change: onChange,

            pageable: {
                pageSize: 20,
                refresh: true,
                messages: {
                    refresh: "Refresh the grid"
                }
            },

            excelExport: function (e) {
                if (exportFlag) {
                    debugger;
                    e.sender.showColumn("INS_TYPE");
                    e.sender.showColumn("ErollementYear");

                    e.preventDefault();
                    exportFlag = true;
                    setTimeout(function () {
                        e.sender.saveAsExcel();
                    });
                } else {
                    e.sender.hideColumn(0);
                    exportFlag = false;
                }
            }

        };
        var onClose = function () {
        };

        grid.kendoGrid(gridOptions).delegate("tbody>tr", "dblclick", function (e) { GotoDetailView(e) });

    };
    var dataBoundGrid = function () {

        var grid = new $("#ActiveGrid").data("kendoGrid");
        var data = grid.dataSource.data();
        $.each(data, function (i, row) {

            var INSType = row.INS_TYPE;
            if (INSType == "CLOSED") {

                $('tr[data-uid="' + row.uid + '"] ').css("background-color", "#990000"); //red
            }
            else {
                $('tr[data-uid="' + row.uid + '"] ').css("background-color", "#ff5c33"); //orange
            }
        });

    };
var refresh = function () {
        var grid = $('#ActiveGrid');
        if (grid.length < 1) {
            return;
        }
        grid.data("kendoGrid").dataSource.read();
    };
    return {
        Initialize: initialize,
        Refresh: refresh,

    };
}();


function GotoDetailView(e) {
    var grid = $("#ActiveGrid").data("kendoGrid");
    window.location = baseUrl + "Details/Index?ID=" + ID;

}

function onChange(e) {

    var model = this.dataItem(this.select());
    ID = model.ID;
}
excelExport:函数(e){
if(exportFlag){
e、 sender.showColumn(“INS_类型”);
e、 寄件人。展示栏(“收款年度”);
e、 预防默认值();
exportFlag=true;
setTimeout(函数(){
e、 sender.saveAsExcel();
});
}否则{
e、 发送方。hideColumn(0);
exportFlag=false;
}
}
下面是绑定的完整代码
var baseUrl=$('base').attr('href');
var gridReadUrl=baseUrl+“保险/获取保险争议”;
var exportFlag=true;
$(文档).ready(函数(){
InsuranceGrid.Initialize(“#ActiveGrid”);
var grid=$(“#ActiveGrid”).data(“kendoGrid”);
});
var InsuranceGrid=函数(){
变量初始化=函数(){
var grid=$(“#ActiveGrid”);/$('div',container);
变量筛选选项={
额外:错,
操作员:{
字符串:{
情商:“等于”,
startswith:“以开始”,
包含:“包含”,
endswith:“以结束”
}
}
};
变量列选项=[
{
字段:“INS_NO”,
标题:“INS#”,
宽度:100,
可过滤:正确,
可编辑:false,
锁定:对
},
{
字段:“INS_类型”,
标题:“保险类型”,
宽度:250,
可过滤:false,
隐藏:真的
},
{
字段:“ErollementYear”,
标题:“注册年份”,
宽度:200,
可过滤:false,
可编辑:false,
隐藏:真的
},
];
变量gridOptions={
工具栏:[“excel”],
卓越:{
文件名:“InsuranceList.xlsx”,
是的,
可过滤:真
},
数据源:{
错误:函数(e){
如果(例如错误!=错误){
警报(“错误:+e.错误”);
网格1(“数据绑定”,函数(e){
e、 preventDefault();//取消网格重新绑定
});
}
},
运输:{
阅读:{
url:gridReadUrl,
类型:“POST”,
完成:函数(jqXHR,textStatus){
//警报(“ere”);
},
数据:函数(){
返回{};
}
},
},
模式:{
数据:“数据”,
总计:“总计”,
型号:{
id:“id”,
字段:{
身份证:{
可编辑:false,
类型:“编号”
},
INSU编号:{
可编辑:false,
类型:“字符串”
},
INS_类型:{
是的,
类型:“字符串”
},
学年:{
是的,
类型:“字符串”
},
}
}
},
对,,
对,,
服务器筛选:true
}
,dataBound:dataBoundGrid
,列:列选项,
身高:650,
可排序:{
模式:“单身”,
allowUnsort:错误
},   
可过滤:正确,
是的,
改变:一旦改变,
可分页:{
页面大小:20,
刷新:是的,
信息:{
刷新:“刷新网格”
}
},
Excel导出:函数(e){
if(exportFlag){
调试器;
e、 sender.showColumn(“INS_类型”);
e、 寄件人。展示栏(“收款年度”);
e、 预防默认值();
exportFlag=true;
setTimeout(函数(){
e、 sender.saveAsExcel();
});
}否则{
e、 发送方。hideColumn(0);
exportFlag=false;
}
}
};
var onClose=函数(){
};
委托(“tbody>tr”,“dblclick”,函数(e){GotoDetailView(e)});
};
var-dataBoundGrid=函数(){
var grid=new$(“#ActiveGrid”).data(“kendoGrid”);
var data=grid.dataSource.data();
$。每个(数据、函数(i、行){
var INSType=row.INS\u TYPE;
如果(