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

news2024/11/27 13:47:49
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)
          }}       
       />

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1042308.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3D科研绘图与学术图表绘制:从入门到精通

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 3D科研绘图和学术图表绘…

运行时内存分配

目录 一、程序计数器 二、虚拟机栈 3、本地方法栈 4、Java堆&#xff08;Heap) 5、方法区 很多人将 JAVA 内存分为堆内存(Heap)和栈内存(Stack)&#xff0c;这种划分方式在一定程度上体现这两块区域是 Java 工程师最关注的内存区域。但是这种划分方式并不完全正确&#xf…

AttributeError: ‘Prophet‘ object has no attribute ‘stan_backend‘解决方案

在使用Facebook prophet过程遇到如下问题&#xff1a; 代码如下&#xff1a; from prophet import Prophet model Prophet()执行程序报如下错误&#xff1a; File "D:\Python\Python38\lib\site-packages\prophet\forecaster.py", line 156, in _load_stan_backend…

如何构建基于大模型的App

ChatGPT 的出现让大模型再一次成为业界的关注热点&#xff0c;然而&#xff0c;并不是每个组织都要去训练及生成大模型的&#xff0c;而且各个组织的技术积累和计算资源也不太允许这样去做。更多的时候&#xff0c; 我们还是基于大模型开发业务应用。所谓智能原生&#xff08;A…

Spring MVC 入门指南

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

Windows系统利用cpolar内网穿透搭建Zblog博客网站并实现公网访问内网!

文章目录 1. 前言2. Z-blog网站搭建2.1 XAMPP环境设置2.2 Z-blog安装2.3 Z-blog网页测试2.4 Cpolar安装和注册 3. 本地网页发布3.1. Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 想要成为一个合格的技术宅或程序员&#xff0c;自己搭建网站制作网页是绕…

使用github创建个人页面,以及git的两种使用方式

目录 前言记录如何使用vs code提交代码 一、个人页面的创建二、Git的使用1.Git的工作原理2. 如何使用VS Code同步代码到远程仓库参考3. 如何在github网页上提交更新 前言 本篇主要介绍两个干货&#xff1a;1、如何利用github创建个人页面&#xff0c;对于学者范儿的从业人员可…

【已解决】windows10误删环境变量Path

【已解决】windows10误删环境变量Path 1.问题描述 进行python环境配置时&#xff0c;误删Path全部环境变量 2.解决原理及操作 图形化界面修改Path&#xff1a;同步到注册表&#xff0c;立即生效&#xff0c;已打开的cmd不会生效cmd命令修改Path&#xff1a;同步到注册表&am…

报错处理:Java休眠时在CPU上运行

大家好&#xff0c;今天我来分享一个我在运维过程中遇到的问题&#xff0c;关于Linux上Tomcat启动时出现的“Java休眠时在CPU上运行”的报错&#xff0c;以及如何解决这个问题的。 首先&#xff0c;让我们来看看这个报错信息。当你在启动Tomcat时&#xff0c;如果你看到类似的错…

SpringMVC 学习(四)RestFul 风格

5. RestFul 风格 5.1 简介 概念 Restful就是一个资源定位及资源操作的风格。不是标准也不是协议&#xff0c;只是一种风格。基于这个风格设计的软件可以更简洁&#xff0c;更有层次&#xff0c;更易于实现缓存等机制。 功能 资源&#xff1a;互联网所有的事物都可以被抽象为…

【冰糖R语言】创建R包(打包R程序)

目标&#xff1a;将现有R程序打包 可能涉及知识点&#xff1a;devtools包、usethis包、Rstudio软件 一、R包的类型 通常一个R包中包含以下元素&#xff1a; 1&#xff09;R文件夹&#xff1a;函数代码 2&#xff09;man文件夹&#xff1a;存放每个函数的注释文件 3&#x…

千万别把工作 当成天大的事

作者| Mr.K 编辑| Emma 来源| 技术领导力(ID&#xff1a;jishulingdaoli) 工作不是我们的“主业”&#xff0c;人生才是。K哥一位前同事的遭遇&#xff0c;让我对这句话有了更深的感受。这位前同事&#xff0c;是某大厂高管&#xff0c;由于长期作息不规律和巨大工作压力&…

C++:线上课程2_12(多态和虚函数)

文章目录 一、多态1.多态定义2.多态分类2.1编译时的多态2.2运行时的多态 二、虚函数1.定义2.成员函数与虚函数3.为什么构造函数&#xff08;移动构造函数&#xff0c;拷贝构造函数&#xff09;不可以定义为虚函数&#xff1f;4.示例5.对象和指针和引用调用6.虚表分配7.this指针…

【Redis7】--6.集群

文章目录 集群1.基本介绍2.redis集群槽位3.redis集群分片4.redis槽位映射5.redis集群环境搭建5.1三主三从redis集群配置5.2启动六台redis实例5.3构建主从关系 6.redis集群读写7.redis集群主从切换8.redis集群扩容9.redis集群缩容10.集群常用操作命令和CRC16算法分析 集群 1.基…

聊聊复杂网络环境下hdfs的BlockMissingException异常|参数dfs.client.use.datanode.hostname

聊聊复杂网络环境下hdfs的BlockMissingException异常|参数dfs.client.use.datanode.hostname 1 从一个复杂网络环境下的 hdfs 报错问题聊起 大家知道&#xff0c;企业真实的网络环境是复杂多变的&#xff0c;这可能有多种原因&#xff1a; 一方面&#xff0c;单台服务器可以…

国产32位单片机 普冉PY32F002B 适用于LED灯驱,控制器等

PY32F002B 系列单片机采用高性能的 32 位 ARM Cortex-M0内核&#xff0c;宽电压工作范围的 MCU。嵌入了24Kbytes Flash 和 3Kbytes SRAM 存储器&#xff0c;最高工作频率 24MHz。有TSSOP20, QFN20, SOP16, SOP14,MSOP10多种不同封装类型多款产品。 芯片集成了I2C、SPI、USART 等…

C#程序中很多ntdll.dll、clr.dll的线程

VS中调试缓慢&#xff0c;如下图 需要“右键工程——调试——取消勾选‘启用本地代码调试’”即可。

划片机是用于半导体芯片和其它电子元件切割的设备

划片机是用于半导体芯片和其它电子元件切割的设备。在电子行业中&#xff0c;划片机广泛应用于半导体器件、LED芯片、功率器件等多个领域。通过划片机&#xff0c;可以将芯片或其它电子元件从其母片或衬底上切割下来&#xff0c;以便进一步的使用和加工。 半导体芯片是现代电子…

瑞芯微RK3568|SDK开发之环境安装及编译操作

1. SDK简介 一个通用 Linux SDK 工程目录包含有buildroot、app、kernel、device、docs、external 等目录。其中一些特性芯片如RK3308/RV1108/RV1109/RV1126等&#xff0c;会有所不同。 ● app&#xff1a;存放上层应用 app&#xff0c;主要是 qcamera/qfm/qplayer/settings 等…