我有一个创建剑道网格的功能,该网格具有将其下载为“.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 个文件。 如果我再次更改下拉列表,则值将根据下拉列表值更改,但如果我单击下载文件,它将下载前 2 个文件 + 网格中的文件。
似乎即使我再也看不到以前的网格了,它们仍然在那里,所以我想知道如何销毁/删除/清理它们。
最佳答案
我建议您在创建新网格之前删除网格。如果您想重新分配它,此函数将删除它,并且还会返回网格中的当前数据:
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({
...
}
关于javascript - "Export to excel"按钮kendogrid下载超过1个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40218653/