使用按钮

时间:2017-12-16 20:13:53

标签: export-to-excel export-to-csv admin-on-rest

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

  • 根据所选过滤器导出(我最喜欢的)。
  • 使用复选框从表格中选择的行进行导出。

我想有两件事是必要的:

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

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

2 个答案:

答案 0 :(得分: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,因此它不会嵌入到模型数据中,因此您无权访问它。您可能必须将文件名和路径硬编码到组件中,因此单击将始终导致下载。虽然这并不像听起来那么简单,因为文件生成本身将是异步操作。我认为单击此按钮会导致重定向到显示下载链接的页面。

答案 1 :(得分:0)

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