antd table rowSelection多选框(可选择列表)

本文介绍如何使用Ant Design (AntD)将普通列表转换为可选择列表。通过设置rowSelection属性,可以实现列表项的选择功能,并通过回调函数onChange获取所选列表项的键值和详细信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

可选择列表

在这里插入图片描述
如上图,是antd的可选择列表,我们如何将普通列表变成可选择列表呢,这就用到了一个很重要的属性rowSelection。

rowSelection

如下图,rowSelection属性是一个对象,他有很多的参数。
在这里插入图片描述
下面是antd官网截图,关于rowSelection的功能配置。在这里插入图片描述

指定可选择列的属性作为key

注意:其中有个很重要的点,就是selectedRowKeys默认取得是列表的第一项,如果你想指定key,就要在table增加rowKey={record => record.id},id可以换成record的任意值。

// selectedRowKeys表示所选择列的key是一个字符串,selectedRows表示所选列的信息,是一个数组
 rowSelectionChange = (selectedRowKeys, selectedRows) => {
    console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
    this.setState({
      selectedRowKeys: selectedRowKeys
    })

  }

render() {
    const { form } = this.props;
    const {
      tabData,
    } = this.state;

    const rowSelection = {
      onChange: (selectedRowKeys, selectedRows) => {
        this.rowSelectionChange(selectedRowKeys, selectedRows)
      },
    };
    return (
      <Fragment>
          <Row style={{maxHeight: 100, overflowY: "auto" }}>
             <Table
               columns={this.columns}
               dataSource={tabData}
               pagination={false}
               scroll={{ x: "max-content" , }}
               rowSelection={rowSelection}
               rowKey={record => record.id}
             />
           </Row>
      </Fragment>
    );
  }
### 解决 Ant Design Vue 中 Checkbox 组件的状态修改 在 Ant Design Vue 的 Table 组件中,当需要控制特定行的 `Checkbox` 是否可用时,可以通过配置 `rowSelection.getCheckboxProps` 方法来动态设定每一行的选择框属性。对于禁用某些项的需求,可以在该函数内基于记录的数据决定是否应用 `disabled` 属性。 ```javascript const [registerTable] = useTable({ rowSelection: { type: 'checkbox', fixed: true, getCheckboxProps: (record) => ({ disabled: !!record.disabled // 如果记录中有 disabled 字段,则将其转换为布尔值并应用于 checkbox }), }, }); ``` 上述代码展示了如何利用 `getCheckboxProps` 来传递额外参数给每一个复选框实例[^1]。此方式允许开发者灵活地定义哪些条目应该被锁定不可选中。 另外,在处理更复杂的业务逻辑时——比如依据用户的交互行为实时调整可选项范围(如仅限于前三个选择),可以监听事件并在适当时候更新数据源中的 `disabled` 标记: ```typescript // 假设有一个方法用于追踪已选项目的数量以及管理它们之间的关系 function handleSelectChange(selectedRowKeys, selectedRows){ let updatedDataSource = dataSource.map(item=>{ item.disabled = !selectedRowKeys.includes(item.key)&&selectedRowKeys.length>=3; return item; }); setDataSource(updatedDataSource); // 更新表格的数据源以反映最新的状态变化 } ``` 这段 TypeScript 代码片段说明了怎样根据当前已被选取的数量去影响剩余项的可用性,并且一旦达到预定数目就自动阻止更多项目被加入到选定集合里[^2]。 最后值得注意的是,如果遇到类似 Element UI Tree 组件那样由于键名冲突而导致意外勾选的情况,务必确认所使用的唯一标识符不会与其他地方重复,从而避免不必要的误会和错误发生[^4]。 #### 关联表单项启用/禁用策略 针对表单内的控件相互依赖的情形,建议引入一个集中式的 `status` 变量用来表示不同状态下各个输入域的行为模式(例如编辑、只读或隐藏)。这有助于简化界面布局的同时也提高了用户体验的一致性和直观度[^3]。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值