Ant-Design-Pro-V5 :ProTable自定义搜索菜单操作栏和搜索事件、列表工具栏操作。

import React, { useRef, useState, useEffect } from 'react';
import { Button, Form } from 'antd';
import { PageContainer, ProTable} from '@ant-design/pro-components';
const Demo= () => {
const beforeSearchSubmit = (params) => {
    //par 就是你搜索表单输入的内容
}
const exportExcel = (params) => {
  console.log(params);
};
 <ProTable
        headerTitle="查询表格"
        columns={columnsData}
        rowKey="key"
        formRef={formRef}
        params={
          params
        }
        beforeSearchSubmit={beforeSearchSubmit}
        search={{
          labelWidth: 100,
          span: 12,
          optionRender: ({searchText, resetText}, {form}, dom) => [
            <Button type="primary" onClick={() =>exportExcel({...formRef.current?.getFieldsValue(),})}>导出</Button>,
            <Button
              key="searchText"
              type="primary"
              onClick={() => {
                // console.log(params);
                form?.submit();
              }}
            >
              {searchText}
            </Button>,
            <Button
              key="resetText"
              onClick={() => {
                form?.resetFields();
              }}
            >
              {resetText}
            </Button>
          ]
        }}
        request={(params) => {
          return getStorageAPI(params,searchParams)
        }}
      />
    }
export default Demo;
  1. 自定义搜索菜单操作栏和搜索事件

用到的API :search、beforeSearchSubmit

search
optionRender : 自定义搜索操作栏
searchText, resetText对应组件自身提供的搜索和重置按钮,我需要在这两个按钮前面加上自己的其他操作,比如搜索类型等等,效果如下图:
在这里插入图片描述
beforeSearchSubmit

自定义搜索操作事件:
proTable 默认是把搜索框的内容直接放到了表格的 params 里面的,有些时候我们的搜索字段可能需要更改,或者后台需要的数据格式比较特殊,这个时候我们就可以在这里做操作了

注意: 如果你配置了该方法,那么查询事件就会失效,你可以在这个方法里通过更新 params的方式来实现更新表格

另外 如果想更改搜索表单的key,在colums里的formItemProps属性可以实现,代码如下:

const columnsData = [
    {
      title: 'pool',
      dataIndex: 'pool',
      valueType: 'textarea',
      ellipsis: true,
      copyable: true,
      tip: '标题过长会自动收缩',
      formItemProps: {label: 'xxxx'}, //修改查询表单的label值
    }
]
  1. 列表工具栏操作

用到的API :columnsState(受控的列状态,可以操作显示隐藏)
在这里插入图片描述

部分代码:

  const [columnsStateMap, setColumnsStateMap] = useState(() => {
    //从缓存里面获取ColumnsState
    return JSON.parse(localStorage.getItem('storeManagementSeeting')) || {};
  });
 
  const handleOnChangeColumn = (map,ColumnsState) => {
    setColumnsStateMap(map);
  }
      
 <ProTable
          headerTitle="查询表格"
          columns={columns}
          rowKey="key"
          params={
            params
          }
          beforeSearchSubmit={beforeSearchSubmit}
          search={{
            labelWidth: 100,
            span: 12,
            optionRender: ({searchText, resetText}, {form}, dom) => [
              <Button type="primary" onClick={() => confirm(form)}>check</Button>,
              <Dropdown overlay={menu}>
                <Button type="primary" >
                  {selectedKeys === 'like' ? 'Normal' : selectedKeys === 'equal' ? 'Accurate' : selectedKeys} <DownOutlined />
                </Button>
              </Dropdown>,
              <Button
                key="searchText"
                type="primary"
                onClick={() => {
                  // console.log(params);
                  form?.submit();
                }}
              >
                {searchText}
              </Button>,
              <Button
                key="resetText"
                onClick={() => {
                  form?.resetFields();
                }}
              >
                {resetText}
              </Button>
            ]
          }}
          // columnsStateMap={columnsStateMap}
          columnsState={{ //列设置-操作
            value:columnsStateMap, //列状态的值,支持受控模式
            onChange: handleOnChangeColumn, //列状态的值发生改变之后触发
            persistenceKey:'storeManagementSeeting', //持久化列的 key,用于判断是否是同一个 table,会存在缓存里去
            persistenceType:'localStorage' //持久化列的类类型, localStorage 设置在关闭浏览器后也是存在的,sessionStorage 关闭浏览器后会丢失
          }}
          pagination={false}
          request={(params) => {
            return getStorageAPI(params)
          }}       
       />
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值