antd通过 filterDropdown 自定义按某天时间搜索功能

所属分类: 网络编程 / 其它综合 阅读数: 1154
收藏 0 赞 0 分享

import React, { Component } from 'react';
import { Table, Input, Button, Icon, DatePicker } from 'antd';
import moment from 'moment';
import Highlighter from 'react-highlight-words';
export default class RpoliceRecord extends Component {
 constructor(props) {
  super(props);
  this.state = {
   searchText: '',
  }
 }
 render() {
  // 添加搜索
  this.getColumnSearchProps = (dataIndex, title) => ({
   filterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters }) => (
    <div style={{ padding: 8 }}>
     <Input
      ref={node => {
       this.searchInput = node;
      }}
      placeholder={`搜索 ${title}`}
      value={selectedKeys[0]}
      onChange={e => setSelectedKeys(e.target.value ? [e.target.value] : [])}
      onPressEnter={() => this.handleSearch(selectedKeys, confirm)}
      style={{ width: 188, marginBottom: 8, display: 'block' }}
     /> 
     <Button
      type="primary"
      onClick={() => this.handleSearch(selectedKeys, confirm)}
      icon="search"
      size="small"
      style={{ width: 90, marginRight: 8 }}>
      搜索
     </Button>
     <Button onClick={() => this.handleReset(clearFilters)} size="small" style={{ width: 90 }}>重置</Button>
    </div>
   ),
   filterIcon: filtered => (
    <Icon type="search" style={{ color: filtered ? '#1890ff' : undefined }} />
   ),
   onFilter: (value, record) =>
    record[dataIndex]
     .toString()
     .toLowerCase()
     .includes(value.toLowerCase()),
   onFilterDropdownVisibleChange: visible => {
    if (visible) {
     setTimeout(() => this.searchInput.select());
    }
   },
   render: text => (
    <Highlighter
     highlightStyle={{ backgroundColor: '#ffc069', padding: 0 }}
     searchWords={[this.state.searchText]}
     autoEscape
     textToHighlight={text.toString()}
    />
   ),
  });
  //搜索
  this.handleSearch = (selectedKeys, confirm) => {
   confirm();
   console.log(selectedKeys,confirm);
   this.setState({ searchText: selectedKeys[0] });
  };
  this.handleSearchtime = (selectedKeys, confirm) => {
   confirm();
   this.setState({ searchText: selectedKeys });
  };
  //重置
  this.handleReset = clearFilters => {
   clearFilters();
   this.setState({ searchText: '' });
  };
  const columns = [
   { title: '报警时间', dataIndex: 'time', key: 'time',
   filterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters }) => (
    <div style={{ padding: 8 }}>
      <DatePicker placeholder={`搜索时间`}
      value={selectedKeys[0]}
      onChange={dateString => setSelectedKeys(dateString ? [dateString] : [])}
      onPressEnter={() => this.handleSearch(selectedKeys, confirm)}
      style={{ width: 188, marginBottom: 8, display: 'block' }}/>
     <Button
      type="primary"
      onClick={() => this.handleSearchtime(moment(selectedKeys[0]._d).format('YYYY-MM-DD'), confirm)}
      icon="search"
      size="small"
      style={{ width: 90, marginRight: 8 }}>
      搜索
     </Button>
     <Button onClick={() => this.handleReset(clearFilters)} size="small" style={{ width: 90 }}>重置</Button>
    </div>
   ),
   filterIcon: filtered => (
    <Icon type="search" style={{ color: filtered ? '#1890ff' : undefined }} />
   ),
   onFilter: (value, record) => {
    return record.time.indexOf(moment(value).format('YYYY-MM-DD')) != -1},
   render: text => (
    <Highlighter
     highlightStyle={{ backgroundColor: '#ffc069', padding: 0 }}
     searchWords={[this.state.searchText]}
     autoEscape
     textToHighlight={text.toString()}
    />
   ),
   },
   { title: '来电', key: 'callnum', dataIndex: 'callnum', ...this.getColumnSearchProps('callnum', '来电'), },
   { title: '时长', key: 'longtime', dataIndex: 'longtime', }
  ];
  const data = [
   { key: '1', time: '2019-07-30 16:31:05', callnum: '13546540218', longtime: '37秒' },
   { key: '2', time: '2019-06-24 22:08:05', callnum: '13546540218', longtime: '1分12秒' },
   { key: '3', time: '2017-08-15 12:31:05', callnum: '13546540218', longtime: '1分10秒' },
   { key: '4', time: '2016-12-30 06:15:00', callnum: '13546540218', longtime: '20秒' }
  ];
  return (
    <Table className="accidentTable" columns={columns} dataSource={data} bordered size="small" />
  )
 }
}

以上所述是小编给大家介绍的antd通过 filterDropdown 自定义按某天时间搜索功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

更多精彩内容其他人还在看

详解VScode自动补全CSS3前缀插件以及配置无效的解决办法

这篇文章主要介绍了详解VScode自动补全CSS3前缀插件以及配置无效的解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

2020史上最全IDEA插件总结(推荐收藏)

这篇文章主要介绍了2020史上最全IDEA插件总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

IDEA开启Run Dashboard的配置详解

这篇文章主要介绍了IDEA开启Run Dashboard的配置详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

VSCode + WSL 2 + Ruby环境搭建图文详解

这篇文章主要介绍了VSCode + WSL 2 + Ruby环境搭建,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Python和Go成为2019年最受欢迎的黑客工具(推荐)

这篇文章主要介绍了Python和Go成为2019年最受欢迎的黑客工具,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

SHA:安全散列算法简析 附实例

SHA (Secure Hash Algorithm,译作安全散列算法) 是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院(NIST) 发布的一系列密码散列函数
收藏 0 赞 0 分享

有关微信的小程序和小游戏的区别

这篇文章主要介绍了有关微信的小程序和小游戏的区别,本文通过图文文字相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

程序员鼓励师插件Rainbow Fart(彩虹屁)

这篇文章主要介绍了程序员鼓励师插件Rainbow Fart(彩虹屁)的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

盘点网络编程必须要知道的基础知识

这篇文章主要介绍了盘点网络编程必须要知道的基础知识,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

fastjson到底做错了什么?为什么会被频繁爆出漏洞?(推荐)

前段时间,fastjson被爆出过多次存在漏洞,很多文章报道了这件事儿,并且给出了升级建议。本文给大家分享fastjson的releaseNote以及部分源代码。感兴趣的朋友跟随小编一起看看吧
收藏 0 赞 0 分享
查看更多