“导出到Excel”按钮kendogrid下载多个文件

时间:2016-10-24 12:38:03

标签: javascript html kendo-ui

我有一个创建一个剑道网格的功能,该按钮可以将其下载为“.xlsx”文件。 有一个下拉列表,当更改时,再次调用此函数。

function CreateGrid(result) {

    var chartSeries = result.ChartData;
    var gName = $("#dropdown1 option:selected").text();
    // Create Grid
    $("#grid1").kendoGrid({
        toolbar: ["excel"],
        excel: {
            fileName: "Grid1_"+gName+".xlsx",
            filterable: true,
            allPages: true
        },
        columns: [
            { field: "column1", width: "90px", title: "<strong>Item1</strong>" },
            { field: "column2", width: "80px", title: "<strong>Item2</strong>" },
            { field: "column3", width: "120px", title: "<strong>Item3</strong>", format: "{0:c2}" }

        ],
        groupable: false,
        resizable: true,
        pageable: false,
        scrollable: true,
        filterable: false,
        sortable: true,
        pageSize: 50
    });

    // Set Grid data source
    $("#grid1").data("kendoGrid").setDataSource(
        new kendo.data.DataSource({
            //Set the data of the grid as the result array of object.
            data: result.ChartData
        })
    );
}

问题是,当我点击按钮下载文件时,它会下载我之前只需要当前网格的每个网格。 例如,我创建了一次网格,然后我更改了下拉列表并将网格更改为与新下拉列值对应的值,但是当我单击按钮时,它会从第一个网格和下一个网格中下载2个文件。 如果我再次更改下拉列表,则值将根据下拉列值更改,但如果我单击下载文件,则会下载前两个文件+网格中的文件。

似乎即使我不能再看到之前的网格了,它们仍然存在,所以我想知道如何销毁/擦除/清理它们。

1 个答案:

答案 0 :(得分:1)

我建议您在创建新网格之前删除网格。如果你想重新分配它,这个函数会删除它并且还会返回网格中的当前数据:

function removeGrid(g) {
    var tmp = [];
    try {
        tmp = g.data("kendoGrid").dataSource.data();
    } catch (e) { }
    var container = g.parent();
    g.remove();
    container.append("<div id='" + g.attr("id") + "' class='" + g.attr("class") + "'></div>");
    return tmp;
}

然后你可以这样称呼它:

var gName = $("#dropdown1 option:selected").text();
removeGrid($("#grid1"));
// Create Grid
$("#grid1").kendoGrid({
    ...
}