我有一个创建一个剑道网格的功能,该按钮可以将其下载为“.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个文件。 如果我再次更改下拉列表,则值将根据下拉列值更改,但如果我单击下载文件,则会下载前两个文件+网格中的文件。
似乎即使我不能再看到之前的网格了,它们仍然存在,所以我想知道如何销毁/擦除/清理它们。
答案 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({
...
}