我有一个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之前,它应该要求保存位置。
答案 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();
我想它可以解决你的第一个问题。
如有任何问题,请告诉我。