在服务器分页/排序/过滤模式下将数据导出为CSV

时间:2017-12-28 11:33:00

标签: ag-grid ag-grid-ng2

我正在尝试将数据导出为CSV。

问题是,在考虑paginationPageSizemaxBlocksInCachecacheBlockSize等时,它仅导出从HTTP调用收到的内存数据中的可见数据 OR 在网格中。不是整个数据集。

我通过以下链接,但无法获得太多帮助。

  1. [export] Export to CSV all pages in Client side Pagination
  2. agGrid data export
  3. 我们有什么方法可以做到这一点?或者这完全不可能?

1 个答案:

答案 0 :(得分:1)

这就是我解决这个问题的方式-

  1. 从数据源获取所需的所有行
  2. 克隆gridapi对象
  3. 从克隆的gridapi中获取服务器端缓存
  4. 对其进行处理,以使其充满您获取的数据
  5. 在克隆的gridapi上运行export to excel方法
  6. ...
  7. 利润

const gapi = cloneDeep(this.gridApi); //克隆gridApi

const blocks = gapi ['serverSideRowModel']。rootNode.childrenCache.blocks; //禁止私人警告的对象表示法/ err

  // swap rows cache with fetched data
  for (let i = 0, j = 0; i < Math.ceil(results.length/this.paginationPageSize); i++) {
    // we alter relevant block, or if it is not loaded yet we clone 1st one and alter it
    const block = blocks[i] || cloneDeep(blocks[0]);  
    block.rowNodes.forEach(n => n.data = results[j++]);
    blocks[i] = block;
  }
  gapi['serverSideRowModel'].rootNode.childrenCache.blocks = blocks;

  gapi.exportDataAsExcel(params);