使用按钮从列表视图导出数据

问题描述 投票:0回答:2

我正在构建一个简单的管理员休息应用程序。其中一个功能是用户从列表视图中导出内容。到目前为止,我有两种可能的方法。

  • 根据所选过滤器(我最喜欢的)导出。
  • 使用复选框基于表中的选定行导出。

我想有两件事是必要的:

  • 能够在“列表视图”中的某处呈现按钮:在“过滤器”部分中添加“导出”按钮会很棒。我找不到一种方法来渲染一个“导出”按钮来保持过滤器。
  • 该“导出”按钮将能够获取过滤器(从列表视图过滤器部分)以创建用于下载数据的自定义URL。或者,如果使用复选框,则从表中检测选定的行并导出该数据。

我一直在寻找示例或跟随其他同事提问,我也没想出类似的东西。任何信息/示例/项目将非常感谢。

export-to-excel export-to-csv admin-on-rest
2个回答
1
投票

这是可以解决的。过滤器以redux格式存储,可以由任何连接的组件访问。我猜您有一个可用的API端点,您可以使用过滤器数据进行ping操作,然后生成该文件并使用文件URL进行响应。

1)写一个连接的按钮组件。这应该有一个mapStateToProps方法来访问当前的过滤器数据

https://marmelab.com/admin-on-rest/List.html#actions

2)它还应该发送一个生成POST请求的动作。

https://marmelab.com/admin-on-rest/Actions.html#using-a-custom-action-creator

重要提示:您必须考虑如何下载文件本身。由于您正在动态生成URL,因此它不会嵌入到模型数据中,因此您无权访问它。您可能必须将文件名和路径硬编码到组件中,因此单击将始终导致下载。虽然这并不像听起来那么简单,因为文件生成本身将是异步操作。我认为单击此按钮会导致重定向到显示下载链接的页面。


0
投票

为了补充krunal的答案,有一个名为FileSaver的库,它可以获取json响应并启动文件保存操作及其内容,显示文件保存对话框,甚至可以直接下载到您选择的文件中。

© www.soinside.com 2019 - 2024. All rights reserved.