使用保存窗口从Kendo Grid导出过滤数据

时间:2014-01-29 16:13:00

标签: jquery kendo-ui

我有一个kendo网格,我必须完成将其数据导出为Excel格式,我通过以下功能实现。

function ExportData() {
    var targetGrid = $('#divSearchGrid').data("kendoGrid");
    var dataSource = targetGrid.dataSource;

    var dataView = dataSource .view();
    var result = '';

    result = "data:application/vnd.ms-excel,";


        //Defining the headers
        result += "<table><tr><th>Task ID</th><th>Task Description</th><th>Assigned To Name</th></tr>";

        //Filling in the data
        for (var i = 0; i < dataView.length; i++) {
            result += "<tr>";

            result += "<td>";
            result += dataView[i].TaskID;
            result += "</td>";

            result += "<td>";
            result += dataView[i].TaskDescription;
            result += "</td>";

            result += "<td>";
            result += dataView[i].AssignedToName;
            result += "</td>";

            result += "</tr>";
        }
        result += "</table>";
    aLink.href = result;
    aLink.download = 'exporteddata@.xls';
    aLink.click();
}

问题1: 如果应用过滤,则不会将其考虑在内并显示所有结果。我只希望过滤后的数据显示在网格中。

问题2: 现在,当用户点击导出按钮时,下载开始,然后导出按钮调用此功能。我希望在开始下载创建的excel之前,它应该要求保存位置。

1 个答案:

答案 0 :(得分:0)

您可以在使用它的视图进行导出之前过滤数据源,方法如下:

//If we want to show the filtered results
    var filteredDataSource = new kendo.data.DataSource({
        data: YourDataDource.data(),
        filter: YourDataDource.filter()
    });

然后获取已过滤数据源的视图

filteredDataSource.read();

  var dataView = filteredDataSource .view();

我想它可以解决你的第一个问题。

如有任何问题,请告诉我。