亲宝软件园·资讯

展开

antd vue 表格rowSelection选择框功能的使用方式

YaaLee_ 人气:0

antd vue 表格rowSelection选择框功能

html部分:

<a-table
        :columns="columns"
        :data-source="showList"
        :row-selection="rowSelection"
        :rowKey="record=>record.id"
      />

功能部分:

computed: {
    rowSelection () {
      return {
      // type: 'radio', // 是否为单选
        selectedRowKeys: this.dataListSelectionKeys,
        onChange: (selectedRowKeys, selectedRows, event) => {
             //selectedRowKeys 为你点击选框时这一页选中的所有key
             //selectedRows 为你点击选框时这一页选中的所有数据
        },
        onSelect: (record, selected, selectedRows, nativeEvent) => {
          //record 点击某一条的所有数据
          //selected 点击的一条是否被选中
        },
        onSelectAll: (selected, selectedRows, changeRows) => {
          //selected 点击全选是否选中
          //selectedRows 点击全选判断所有的选中数据
          //changeRows 所有改变选中状态的数据
        },
        getCheckboxProps: record => ({
          props: {
            // 全部默认禁止选中
            // disabled: true,
            // 某几项默认禁止选中(R: 当state等于1时)
            // disabled: record.state == 1,
            // 某几项默认选中(R: 当state等于1时)
            defaultChecked: record.state === 1
          }
        })
      }
    }
  }

Antd Table组件rowSelection方法的一些坑

当table组件多选时,会将所有的表格数据全部选中。

在组件中官网有提供rowSelection方法,可以让Table的第一列成为联动的选择框以及通过rowSelection.selectedRowKeys来控制选项。

比较坑的是

selectedRowKeys控制的只是dataSource当前的序号,必须加上rowKey={record =>record.userId},如果不加上会导致联动的选择框异常,rowKey的id可以自定义为dataSource中的某个值。

遇到问题:当选择某一行的数据事,它会全部选中,而且在onChange事件中的selectRowKeys的值为“[null]”,如下图所示:

 

解决代码如下

 <Table rowSelection={{type:"checkbox",selectedRowKeys:selectedUserKeys,
                            onChange:(selectedKeys,selectedRows) => selectedUserOnChange(selectedKeys,selectedRows)}}
                               columns={slackColumns} dataSource={unApproved} pagination={false} scroll={{y:80}} size="small"  rowKey={record => record.userId}/>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

加载全部内容

相关教程
猜你喜欢
用户评论