Ant-Design中Table组件rowSelection方法的一些坑

18 篇文章 0 订阅
<Table rowSelection={rowSelection} columns={columns} dataSource={data} />

在 <Table/> 组件中有 rowSelection={rowSelection} 方法,可以让Table的第一列成为联动的选择框。

API中说到通过 rowSelection.selectedRowKeys 来控制选中项。比较坑的是,selectedRowKeys 控制的只是dataSource当前的顺序编号。

一定要加上rowKey="id"或者rowKey={record => record.id},后来经过多次调试发现很多BUG都跟这个参数有关,不然会导致联动的选择框状态异常。id可以自定义为dataSource中的某个值。

         <Table
              rowSelection={rowSelection}
              columns={this.state.columns}
              rowKey={(record) => record.courseId}
              dataSource={this.state.courseList}
              loading={this.state.loading}
              pagination={{
                defaultPageSize: this.state.limit,
                current: this.state.page,
                total: this.state.totalCount,
                onChange: this.pageChange.bind(this)
              }}/>


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 Ant Design 表格的全选功能,你需要在表格的 `columns` 属性设置一个 `selections` 对象,然后在表格的 `rowSelection` 属性设置 `type: 'checkbox'` 和 `selectedRowKeys` 属性。以下是一个示例代码: ```vue <template> <a-table :columns="columns" :data-source="data" :row-selection="rowSelection"></a-table> </template> <script> import { Table } from 'ant-design-vue'; export default { components: { 'a-table': Table, }, data() { return { columns: [ { title: '', key: 'selection', width: '50px', selections: [ { text: '选择所有行', onSelect: (changeableRowKeys) => { this.rowSelection.selectedRowKeys = changeableRowKeys; }, }, ], render: (text, record) => { return <a-checkbox checked={this.rowSelection.selectedRowKeys.includes(record.key)} />; }, }, { title: '姓名', dataIndex: 'name', }, { title: '年龄', dataIndex: 'age', }, ], data: [ { key: '1', name: '张三', age: 18, }, { key: '2', name: '李四', age: 20, }, { key: '3', name: '王五', age: 22, }, ], rowSelection: { type: 'checkbox', selectedRowKeys: [], onChange: (selectedRowKeys, selectedRows) => { console.log(selectedRowKeys, selectedRows); }, }, }; }, }; </script> ``` 在上面的代码,我们在 `columns` 设置了一个 `selection` 列,它渲染为一个复选框,同时定义了一个 `selections` 对象,它只包含了一个选择所有行的选项。在 `rowSelection` ,我们设置了 `type: 'checkbox'` 表示使用复选框进行选择,并且在 `selectedRowKeys` 维护了选的行的 `key` 值数组。当用户点击选择所有行的选项时,我们通过 `onSelect` 回调函数将所有行的 `key` 值设置为选的行的 `key` 值。在表格的 `render` 函数,我们根据当前行的 `key` 值是否在 `selectedRowKeys` 数组来决定复选框是否选。当用户选择或取消选择行时,我们调用 `onChange` 回调函数来更新选的行的 `key` 值数组。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值