Кнопка «Экспорт в Excel» kendogrid загружает более 1 файла

#javascript #html #kendo-ui

#javascript #HTML #kendo-пользовательский интерфейс

Вопрос:

У меня есть функция, которая создает сетку kendo, в которой есть кнопка для загрузки ее в виде файла «.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 файла тот, что в таблице.

Кажется, что даже если я больше не могу видеть предыдущие сетки, они все еще там, поэтому я хочу знать, как я могу их уничтожить / стереть / очистить.

Ответ №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({
    ...
}