ant design vue table默认全选

问题

对于table,在ant design vuerowSelection提供了一个方法getCheckboxProps,可以设置一些选择框的默认属性配置

但是当我通过getCheckboxPropsdefaultChecked属性进行配置的时候,确实可以实现数据的全选,但是全选按钮却没有选中

在这里插入图片描述

解决方法

在请求后端数据返回之后,进行如下操作

// 先在data中添加rowSelection  selectedRowKeys
data() {
 return {
   rowSelection: {
     selectedRowKeys: []
   },
 }
}
// 然后执行下面的方法进行填充selectedRowKeys
// 从而实现全选功能实现
this.rowSelection.selectedRowKeys = this.list.map(item => item.id)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Ant Design表格中,可以使用 `Checkbox` 组件来实现全选功能。以下是一个简单的实现示例: 1. 在表格的列定义中添加一个 `render` 函数,用于渲染 `Checkbox` 组件: ```javascript const columns = [ { title: '姓名', dataIndex: 'name', }, { title: '年龄', dataIndex: 'age', }, { title: '操作', render: (text, record) => ( <Checkbox onChange={handleSelect(record.key)} /> ), }, ]; ``` 2. 在表格上面添加一个 `Checkbox` 组件,用于触发全选操作: ```javascript const handleSelectAll = (e) => { setData( data.map((item) => { return { ...item, selected: e.target.checked, }; }) ); }; return ( <div> <Checkbox onChange={handleSelectAll}>全选</Checkbox> <Table columns={columns} dataSource={data} rowSelection={{ selectedRowKeys: selectedKeys, onChange: handleSelectChange, }} /> </div> ); ``` 3. 在 `handleSelect` 函数中更新选中状态,并根据选中状态更新全选状态: ```javascript const handleSelect = (key) => (e) => { setData( data.map((item) => { if (item.key === key) { return { ...item, selected: e.target.checked, }; } return item; }) ); const selectedAll = data.every((item) => item.selected); setSelectedAll(selectedAll); }; ``` 完整的示例代码: ```javascript import React, { useState } from 'react'; import { Table, Checkbox } from 'antd'; const data = [ { key: '1', name: 'John Brown', age: 32, selected: false, }, { key: '2', name: 'Jim Green', age: 42, selected: false, }, { key: '3', name: 'Joe Black', age: 32, selected: false, }, ]; const Demo = () => { const [selectedAll, setSelectedAll] = useState(false); const [selectedKeys, setSelectedKeys] = useState([]); const handleSelectAll = (e) => { setData( data.map((item) => { return { ...item, selected: e.target.checked, }; }) ); setSelectedAll(e.target.checked); setSelectedKeys(e.target.checked ? data.map((item) => item.key) : []); }; const handleSelectChange = (selectedRowKeys) => { setSelectedKeys(selectedRowKeys); setSelectedAll(selectedRowKeys.length === data.length); }; const handleSelect = (key) => (e) => { setData( data.map((item) => { if (item.key === key) { return { ...item, selected: e.target.checked, }; } return item; }) ); const selectedAll = data.every((item) => item.selected); setSelectedAll(selectedAll); setSelectedKeys( data.filter((item) => item.selected).map((item) => item.key) ); }; const columns = [ { title: '姓名', dataIndex: 'name', }, { title: '年龄', dataIndex: 'age', }, { title: '操作', render: (text, record) => ( <Checkbox onChange={handleSelect(record.key)} /> ), }, ]; return ( <div> <Checkbox onChange={handleSelectAll} checked={selectedAll}> 全选 </Checkbox> <Table columns={columns} dataSource={data} rowSelection={{ selectedRowKeys: selectedKeys, onChange: handleSelectChange, }} /> </div> ); }; export default Demo; ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值