码迷,mamicode.com
首页 > 其他好文 > 详细

react 使用antd的多选功能做一个单选与全选效果

时间:2019-01-03 11:01:02      阅读:397      评论:0      收藏:0      [点我收藏+]

标签:ima   .post   bubuko   取消   UNC   request   icon   check   return   

一个小而简单的单选全选功能,其实官网已经给出效果了,不过是我多做了些复合用法

import {Modal, Row,Form,Input,Icon,Select} from ‘antd‘;
const FormItem = Form.Item;
const createForm = Form.create;
const { Meta } = Card;
const CheckboxGroup = Checkbox.Group;

export default React.createClass({
    mixins: [LoadingMixin, NotificationMixin, RequestMixin],
    propTypes: {
        onManualClose:React.PropTypes.func,
        onOk: React.PropTypes.func,
        onCancel: React.PropTypes.func,
        title: React.PropTypes.string,
        item: React.PropTypes.object
    },
    getInitialState() {
        return {
            item: this.props.item  && this.props.item || {},
            data: [],
            userObj: {},
            deleteList:[],
            indeterminate: false,
            checkAll: false,
            checkedList:[]
        };
    },
    componentWillMount() {
        this.fetch();
    },
    fetch() {
        console.log("11111111111-------获取父组件传来的用户id-----》",this.props.item.frameid);
        this.post({ //加载图片列表
            url: "Api/historyPush/module/frame/key/dac509bd90a82719a3569291e12c24a6f1af4bac",
            param: {
                frameid: this.props.item.frameid
                // frameid:‘32frame_tj1‘
            },
            noLoading: true
        }).then(result=> {
            console.log("result-----------------",result);
            this.setState({data: result.result || []});
        });
 
    },
    hideModal() {
        this.props.onCancel && this.props.onCancel();
    },
    onChange(checkedList){
        console.log(‘checked = ‘, checkedList);
        this.setState({
            checkedList:checkedList,
            indeterminate: !!checkedList.length && (checkedList.length < this.state.data.length),
            checkAll: checkedList.length === this.state.data.length,
        });

    },
    onCheckAllChange(e){
        console.log("全选1",e.target.checked);
        console.log("全选2",this.state.data);
        let dataList =[]
        for(var i=0;i<this.state.data.length;i++){
            dataList[i]=this.state.data[i].imgid
        }
        console.log("dataList--------",dataList)
        this.setState({
            checkedList: e.target.checked ? dataList : [],
            indeterminate: false,
            checkAll: e.target.checked,
        });
    },
    handleClose(record) {
        var that = this;
        if (this.state.checkedList==null||this.state.checkedList.length==0) {
            that.error("请选择要删除的图片");
            return false;
        };
        console.log("删除的图片",this.props.item.frameid,this.state.checkedList);
        this.post({
            url: "Api/clearCache/module/frame/key/dac509bd90a82719a3569291e12c24a6f1af4bac",
            param: {
                frameid:this.props.item.frameid,
                imglist: this.state.checkedList
            },
            noLoading: true
        }).then(result=> {
            if (result.result) {
                that.success("操作成功");
                that.fetch();
            }
        });
    },
    render() {
        let isMainObj = {
            1 : "是",
            0 : "否"
        }
        let columns = [
            { title: ‘用户‘, dataIndex: ‘userid‘, key: ‘userid‘, width: ‘20%‘,
                render: (text, record) => {
                    return (
                        this.state.userObj && this.state.userObj[text]
                    )
                }
            },
            { title: ‘主管理‘, dataIndex: ‘is_main‘, key: ‘is_main‘, width: ‘20%‘,
                render: (text, record) => {
                    return (
                        isMainObj[record[‘is_main‘]]
                    )
                }
            },
            { title: ‘设备备注‘, dataIndex: ‘remark‘, key: ‘remark‘, width: ‘30%‘ },
            { title: ‘绑定时间‘, dataIndex: ‘create_time‘, key: ‘create_time‘, width: ‘25%‘ }
        ];
        return (
            <Modal title={this.props.title && this.props.title || ‘新增‘} visible={true}  width="700px" onCancel={this.hideModal}  maskClosable={false} footer={
                <Button key="back" type="ghost" size="large" onClick={this.hideModal}>关&nbsp;&nbsp;闭</Button>
            }>
                <div className={‘boxTitle‘}>
                    <Checkbox
                        indeterminate={this.state.indeterminate}
                        onChange={this.onCheckAllChange}
                        checked={this.state.checkAll}
                        // checked={this.state.checked}
                        // disabled={this.state.disabled}
                        // onChange={this.onChange} //this,record
                    >
                        {‘全选‘}
                    </Checkbox>
                    <Popconfirm placement="topRight" title={"您确定要删除这些数据吗?"} onConfirm={this.handleClose} okText="确定" cancelText="取消">
                        <Button type="primary">批量删除</Button>
                    </Popconfirm>
                </div>
                <div className={‘cardBox‘}>
                    <Checkbox.Group style={{ width: ‘100%‘ }} onChange={this.onChange}  value={this.state.checkedList}>
                    <Card title="">
                        {
                            this.state.data && this.state.data.map((item,index) => {
                                return (
                                <Card.Grid className={‘gridStyle‘} key={item.imgid}>
                                    <Checkbox
                                        className={‘CheckboxStyle‘}
                                        value={item.imgid}
                                    >
                                    </Checkbox>
                                    <img  src={item.small_url} ></img>
                                </Card.Grid>
                                )
                            })
                        }
                    </Card>
                    </Checkbox.Group>,
                </div>
            </Modal>
        )
    }
});

 

效果图技术分享图片

react 使用antd的多选功能做一个单选与全选效果

标签:ima   .post   bubuko   取消   UNC   request   icon   check   return   

原文地址:https://www.cnblogs.com/zhixi/p/10212513.html

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!