我正在研究一个Angular和JQuery混合项目。我们有一个剑道网格正在运行。我添加了将剑道网格导出为excel文件的功能。因此,我遵循了一些文档,并使其正常工作。
但是,该项目有点奇怪。假设我们有一个包含40列的数据源。但是,以编程方式,我们隐藏了一些列。 因此,我只需要能够导出可见列。我尝试了几种方法来仅获取可见列,但kendo却给了我所有隐藏和可见的列。
此外,它并没有按照网页上可见的列顺序保存Excel。
我尝试了以下几行:
var _grid = $("#myGrid").data("kendoGrid").dataSource.data();
var _grid_ = $("#myGrid").data().kendoGrid.dataSource.view().filter(item => !item.hidden);
var __grid__ = $("#myGrid").data("kendoGrid").columns.filter(item => !item.hidden);
不幸的是,_grid
和_grid_
返回了所有列(即可见和隐藏)的数据。
而正如预期的那样,__grid__
仅给出了列名。
我在哪里错了?我在做什么错了?
我只需要可见列的数据...以及它们在网页上显示的顺序。 有人可以帮我吗?
答案 0 :(得分:0)
尝试将隐藏的列放在网格的末尾,然后在导出时将其清空。
在网格选项中处理excelExport事件时
excelExport: this.handleExcelExport
,然后,如果您知道要隐藏哪些列
private handleExcelExport(e){
var sheet = e.workbook.sheets[0];
let columnsToHide = [5,6];
sheet.rows.forEach(row =>{
columnsToHide.forEach(column =>{
row.cells[column] = null;
})
})
}