Kendo Grid不会为可见列提供数据

时间:2019-09-12 07:14:49

标签: jquery angular kendo-ui kendo-grid

我正在研究一个Angular和JQuery混合项目。我们有一个剑道网格正在运行。我添加了将剑道网格导出为ex​​cel文件的功能。因此,我遵循了一些文档,并使其正常工作。

但是,该项目有点奇怪。假设我们有一个包含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__仅给出了列名。

我在哪里错了?我在做什么错了?

我只需要可见列的数据...以及它们在网页上显示的顺序。 有人可以帮我吗?

1 个答案:

答案 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;
       })
    })
}