Ant Design Vue table表格点击行选中多选框

在这里插入图片描述
参考官方文档,实现点击行选中前边的多选框

<template>
  <div>
    <a-table :rowSelection="{
        selectedRowKeys: selectedRowKeys,
        onChange: onSelectChange,
        getCheckboxProps:getCheckboxProps
      }"
             :columns="columns"
             :dataSource="data"
             :customRow="setRow">
    </a-table>
  </div>
</template>
<script>
const columns = [
  {
    title: "Name",
    dataIndex: "name",
    scopedSlots: { customRender: "name" }
  },
  {
    title: "Age",
    dataIndex: "age"
  },
  {
    title: "Address",
    dataIndex: "address"
  }
];
const data = [
  {
    key: "1",
    name: "John Brown",
    age: 32,
    address: "New York No. 1 Lake Park"
  },
  {
    key: "2",
    name: "Jim Green",
    age: 42,
    address: "London No. 1 Lake Park"
  },
  {
    key: "3",
    name: "Joe Black",
    age: 32,
    address: "Sidney No. 1 Lake Park"
  },
  {
    key: "4",
    name: "Disabled User",
    age: 99,
    address: "Sidney No. 1 Lake Park"
  }
];
export default {
  data () {
    return {
      data,
      columns,
      selectedRowKeys: [],
      selectedRows: []
    };
  },
  computed: {
  // checkBox属性设置
    getCheckboxProps (record) {
      return record => ({
        props: {
          defaultChecked: record.name === this.data[0].name
        }
      })
    }
  },
  methods: {
    setRow (record) {
      return {
        on: {
          click: () => {
            let rowKeys = this.selectedRowKeys;
            if (rowKeys.length > 0 && rowKeys.includes(record.key)) {
              rowKeys.splice(rowKeys.indexOf(record.key), 1);
            } else {
              rowKeys.push(record.key);
            }
            this.selectedRowKeys = rowKeys;
            console.log(this.selectedRowKeys)
          }
        }
      };
    },
    onSelectChange (selectedRowKeys) {
      console.log("selectedRowKeys changed: ", selectedRowKeys);
      this.selectedRowKeys = selectedRowKeys;
    },

  },
  mounted () {
  }
};
</script>

  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于 Ant Design Vue 2 的表格穿梭框中选中复选框的问题,您可以通过自定义渲染函数来实现。具体步骤如下: 1. 在 `data` 中定义 `columns` 数组,用来存放表格的列信息,其中需要定义一个 `customRender` 函数来自定义渲染复选框: ```vue <template> <a-transfer :data-source="dataSource" :target-keys="targetKeys"> <template #render="item">{{ item.title }}</template> <template #renderList="item"> <a-table :columns="columns" :row-selection="{selectedRowKeys: item.selectedKeys, onChange: item.onChange}" :dataSource="item.dataSource" :pagination="false" :row-key="record => record.key" /> </template> </a-transfer> </template> <script> export default { data() { return { dataSource: [ { key: '1', title: '选项一', checked: false }, { key: '2', title: '选项二', checked: true }, { key: '3', title: '选项三', checked: false }, ], targetKeys: [], columns: [ { title: '选项', dataIndex: 'title' }, { title: '选择', dataIndex: 'checked', customRender: (text, record, index) => { return ( <a-checkbox checked={text} onChange={e => { record.checked = e.target.checked; this.handleChange(); }} /> ); }, }, ], }; }, methods: { handleChange() { const selectedItems = this.dataSource.filter(item => item.checked); const selectedKeys = selectedItems.map(item => item.key); console.log('选中的值:', selectedKeys); }, }, }; </script> ``` 在上述代码中,我们自定义了一个 `columns` 数组,其中第二列使用了 `customRender` 函数来自定义渲染复选框。在渲染复选框时,我们监听了 `onChange` 事件,并在事件处理函数中通过修改 `record.checked` 的值来更新数据源。同时,我们在事件处理函数中调用了 `handleChange` 方法来处理选中的值。 2. 在表格穿梭框的 `renderList` 插槽中,使用 `a-table` 组件来渲染列表,并将选中传递给表格的 `selectedRowKeys` 属性,同时监听 `onChange` 事件来更新选中: 通过上述方法,我们可以自定义渲染复选框,并在选中复选框时获取当前选中的值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值