Material UI之Table Checkbox问题

  • enableSelectAll : [boolean],默认true,启用全选, table props

  • displaySelectAll: [boolean],默认true,全选按钮显示,table header props

  • multiSelectable: [boolean],默认false,不启用多选,table props

  • displayRowCheckbox: [boolean],默认true,显示表记录的勾选按钮,table body props

  • onRowSelection: [function],(rows)=>{}。 rows为选中行行号的数组。若[0,5]则表示第1,6条记录checked为true并选中, table props

  • selected: [boolean],设置特定行被选中。结合onRowSelection完成特定行勾选记住。table row props

  • deselectOnClickaway!!!巨坑!!!:[boolean] ,默认true,表外点击是否取消已勾选的行选,默认取消

核心代码

    //==========parent component:=================
    onRowSelection(rows){
        console.log('rows:',rows)// rows返回选中行的索引数组,
                                 // 另一个巨坑!!!当全选或取消全选为字符串'all'/'none'
        this.setState({selectRows:rows})
    }





        //==========table component:=================

        return (

                //...
                <TableBody 
                    showRowHover={true} 
                    deselectOnClickaway={false}//!!!important
                    displayRowCheckbox = { this.props.displayRowCheckbox || false } 
                    stripedRows={false}>
                    {
                        this.props.data.map((hd, index)=>{
                            let _selected = 
                            this.props.selectRows && (
                            this.props.selectRows == 'all' ? true :
                                 (
                                     this.props.selectRows != 'none' ? 
                                     this.props.selectRows.findIndex((val,i,arr)=>val ==index)>-1 
                                     : false) || false
                                 );
                                     //!!!通过selected更新当前选中项 !!!注意'all''none'的处理
                            return 
                                <TableRow
                                     key={'tableBody' + index}
                                     selected={_selected}>
                                        {
                                        this.props.body.map((col, id)=>{
                                            let data = hd[col.column];
                                            return <TableRowColumn 
                                                        style={this.props.header[id].style} 
                                                        key={'tableRowColumn' + id} 
                                                        title={col.hideTitle ? '' : data}>{data}
                                                    </TableRowColumn>
                                        })
                                    }
                            </TableRow>;
                        })
                    }

                </TableBody>

记录坑,让更少的人踩同样的坑

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值