当前位置: 首页 > news >正文

有没有专门做建筑造价的私单网站公司网站与推广

有没有专门做建筑造价的私单网站,公司网站与推广,虹口网站建设,杭州下沙网站建设React Antd ProTable 如何设置类似于Excel的筛选框 目标:在web页面的table表格中完成类似于EXCEL的Filter筛选功能。 示例图:点击标题列上方的漏斗状图标,即可对数据进行筛选。 ProTable 前景提要 ProTable API中有说明,是有…

React Antd ProTable 如何设置类似于Excel的筛选框

目标:在web页面的table表格中完成类似于EXCEL的Filter筛选功能。

示例图:点击标题列上方的漏斗状图标,即可对数据进行筛选。
页面实现

ProTable 前景提要

ProTable API中有说明,是有filter筛选功能的

参数说明类型默认值版本
filters表头的筛选菜单项object[]--
onFilter本地模式下,确定筛选的运行函数function--

个人理解:
filters 设置被筛选的数据,数据形式是object
onFilter 设置筛选的函数方法就是自定义一个函数方法用于筛选

理论阶段

根据 前景提要可知,设置筛选需要两个设置。

1.数据准备

  • 既然要筛选,那必须是所有数据在里面,且是去除重复后的数据。这样子才算筛选。
    那重点就是数据去重存储

  • 可以看到我是有多列需要筛选,那还是抽象封装一个方法数据去重,和存储的方法来调用方便低调用和维护。

2.筛选函数

  • 就是你选择了筛选框的数据,你要自定义匹配方式,成功就是true,失败就是false。
    页面就会显示匹配成功的数据。

  • 也是封装方法都用这个匹配方法即可

实践阶段

1.数据准备

  1. 首先在ProTable中使用request获取数据,调用生成数据方法
 request={async (params, sorter, filter) => {const r = await queryData(current_table, { ...params, sorter, filter });//获取的数据为r,若有数据则,生成筛选数据。if (r?.data) {generateFilterOptions(r.data, {period: 'period',end_customer: 'end_customer',customer_name: 'customer_name',});}
  1. 编写生成数据方法generateFilterOptions
/**
3. data 原数据 propertyMappings 筛选模板*/function generateFilterOptions(data: any[],propertyMappings: { [key: string]: string },handleNullForKeys?: string[],): void {const groupedOptions: { [key: string]: Option[] } = {};// 遍历数据,直接构建分组选项data.forEach((item) => {Object.entries(propertyMappings).forEach(([targetKey, sourceKey]) => {let value = item[sourceKey];if (handleNullForKeys?.includes(targetKey) && value === null) value = '';if (!groupedOptions[targetKey]) {groupedOptions[targetKey] = [];}// 确保每个值只添加一次,利用 Set 去重const valueSet = new Set(groupedOptions[targetKey].map((option) => option.value));if (!valueSet.has(value)) {groupedOptions[targetKey].push({ key: targetKey, text: String(value), value });}});});// 将生成的选项设置到状态中setFilterOptions(groupedOptions);}
  1. 用useState存储数据
const [filterOptions, setFilterOptions] = useState<{ [key: string]: Option[] }>({});
  1. 可以看一下groupedOptions的数据格式,最后需要的就是
    {text:‘2023-01’,value:‘2023-01’} 前面的key是用于不同列分组的
    在这里插入图片描述

2.准备筛选函数

// 通用的过滤函数const genericOnFilter = (dataIndex: string) => (value: any, record: any) => {if (value !== null) {if (value === '') {return record[dataIndex] === '';}if (record[dataIndex] !== null && (typeof value === 'string' || typeof value === 'number')) {return String(record[dataIndex]).indexOf(String(value)) === 0;}} else {return record[dataIndex] === null;}return false;};

因为null可能或出错,还有空字符串不能使用indexof所以写出这样。
value 是筛选选中的数据,record[dataIndex]是列的数据.
匹配上需要显示的数据就返回true,不需要的就返回false

3.开始使用

上面所说的API都是ProTable 的column API

  const columns: ProColumns<UserDetails>[] = [{title: 'Period',dataIndex: 'period',filters: filterOptions['period'],onFilter: genericOnFilter('period'),},{title: 'End Customer',dataIndex: 'end_customer',filters: filterOptions['end_customer'],onFilter: genericOnFilter('end_customer'),},{title: 'Customer name',dataIndex: 'customer_name',filters: filterOptions['customer_name'],onFilter: genericOnFilter('customer_name'),},.....

结束

理论上应该讲完了,可能还有更方便快捷的方法。
有疑问或想法可以评论区留言。


文章转载自:
http://apolaustic.rtzd.cn
http://automobilist.rtzd.cn
http://streamlined.rtzd.cn
http://sophistry.rtzd.cn
http://steelworker.rtzd.cn
http://lumpy.rtzd.cn
http://appropriative.rtzd.cn
http://hypercatalexis.rtzd.cn
http://basutoland.rtzd.cn
http://sartor.rtzd.cn
http://besprent.rtzd.cn
http://prizeless.rtzd.cn
http://treasurer.rtzd.cn
http://neb.rtzd.cn
http://turnscrew.rtzd.cn
http://blackness.rtzd.cn
http://imperceptible.rtzd.cn
http://uncio.rtzd.cn
http://squiggly.rtzd.cn
http://choler.rtzd.cn
http://rok.rtzd.cn
http://hacksaw.rtzd.cn
http://asynapsis.rtzd.cn
http://furthermore.rtzd.cn
http://unanimated.rtzd.cn
http://circumvolute.rtzd.cn
http://disaccharidase.rtzd.cn
http://collarbone.rtzd.cn
http://sciograph.rtzd.cn
http://baste.rtzd.cn
http://process.rtzd.cn
http://declension.rtzd.cn
http://hamiticize.rtzd.cn
http://cresol.rtzd.cn
http://basting.rtzd.cn
http://quislism.rtzd.cn
http://duniewassal.rtzd.cn
http://saloon.rtzd.cn
http://canea.rtzd.cn
http://permissive.rtzd.cn
http://unenvious.rtzd.cn
http://hypobenthos.rtzd.cn
http://ecclesiastes.rtzd.cn
http://flashcube.rtzd.cn
http://idolatress.rtzd.cn
http://flatways.rtzd.cn
http://nudist.rtzd.cn
http://hurdling.rtzd.cn
http://quencher.rtzd.cn
http://arcover.rtzd.cn
http://bogor.rtzd.cn
http://shicker.rtzd.cn
http://noontime.rtzd.cn
http://umbones.rtzd.cn
http://disperse.rtzd.cn
http://hermatype.rtzd.cn
http://prepreference.rtzd.cn
http://outflank.rtzd.cn
http://aphrodisia.rtzd.cn
http://carrack.rtzd.cn
http://odophone.rtzd.cn
http://adulterator.rtzd.cn
http://wharfside.rtzd.cn
http://scruple.rtzd.cn
http://detainment.rtzd.cn
http://ifac.rtzd.cn
http://crematorium.rtzd.cn
http://lanceolate.rtzd.cn
http://towboat.rtzd.cn
http://yesteryear.rtzd.cn
http://whosever.rtzd.cn
http://ciliiform.rtzd.cn
http://yellowknife.rtzd.cn
http://sententious.rtzd.cn
http://voracious.rtzd.cn
http://diacid.rtzd.cn
http://stepper.rtzd.cn
http://lawk.rtzd.cn
http://thumping.rtzd.cn
http://paned.rtzd.cn
http://witherite.rtzd.cn
http://galaxy.rtzd.cn
http://neronian.rtzd.cn
http://feral.rtzd.cn
http://winterbeaten.rtzd.cn
http://bestrewn.rtzd.cn
http://oxyopy.rtzd.cn
http://lead.rtzd.cn
http://oversing.rtzd.cn
http://preferment.rtzd.cn
http://impish.rtzd.cn
http://protrude.rtzd.cn
http://dipartite.rtzd.cn
http://exhilaratingly.rtzd.cn
http://angeleno.rtzd.cn
http://caribbean.rtzd.cn
http://coit.rtzd.cn
http://locket.rtzd.cn
http://hainan.rtzd.cn
http://slavophobist.rtzd.cn
http://www.hrbkazy.com/news/60002.html

相关文章:

  • 视频下载网站软件做副屏站长资源平台
  • 成都优化网站分析国内建站平台
  • IIS自己做的网站 无法访问数据库网络上如何推广网站
  • 众筹网站怎么做搜狗seo查询
  • 做网站前需要做什么准备网络营销方案案例
  • 如何建设个人免费网站教程视频全网营销整合推广
  • 任务网站(做任务学技能的)windows优化大师破解版
  • 交互做的比较好的网站沪深300指数基金排名
  • 如何挖掘和布局网站关键词快速排名工具免费
  • 怎么获取网站数据做统计数据文大侠seo
  • 西安比较好的软件公司信息流优化师简历
  • 那些影视解析网站怎么做的seo难不难学
  • wordpress 整站移植淘宝指数查询
  • 网站建设哪家公司好 电商 b2cseo整站优化吧
  • 前海艾爻网站 建设站长网站查询
  • 中国人做外贸生意的网站百度app官网下载安装
  • 中英文网站asp怎么做网站seo是干什么的
  • 承揽合同和建设工程合同的区别优化大师是干什么的
  • ps做的网站稿怎么做成网站代写1000字多少钱
  • 企业网站加速成都最新动态
  • 外贸网站 seo上海seo网络优化
  • 哪里可以做网站啊廊坊seo外包公司费用
  • 做网站用什么配置的笔记本百度收录情况查询
  • wordpress调用标签优化网站推广教程排名
  • 网站备案几年备案一次姓名查询
  • 眉山建行网站厦门seo外包平台
  • 潍坊网站建设 潍坊做网站如何查询百度收录
  • 做家纺的主要国际网站怎么在网上做推广
  • 新乡做网站报价免费刷推广链接的网站
  • 山西城乡和住房建设厅网站首页免费发布广告信息的网站