T1747989800 2023-10-11 13:46 采纳率: 50%
浏览 30

antd全选时如何只选择CheckBox为true的

antd vue3版本,全选时,将禁用的也给选上了,如何全选时去掉禁用的?

img

代码如下

<div>
<BasicTable @register="registerTable" :rowSelection="rowSelection" :expandedRowKeys="expandedRowKeys"  @expand="handleExpand"/>
</div>

<script lang="ts" name="production-salesOrder" setup>
   //注册table数据
  const { prefixCls,tableContext,onExportXls,onImportXls } = useListPage({
      tableProps:{
           title: '销售订单',
           api: list,
           columns,
           canResize:false,
           formConfig: {
                //labelWidth: 120,
                schemas: searchFormSchema,
                autoSubmitOnEnter:true,
                showAdvancedButton:true,
                fieldMapToNumber: [
                ],
                fieldMapToTime: [
                ],
            },
           actionColumn: {
               width: 160,
               fixed:'right'
           },
        beforeFetch(params) {
          params.code = mainId.value;
        },
        rowSelection:{
          type: 'checkbox',
          getCheckboxProps(record: Recordable) {
            if (record.approveStatus !== '1' || record.orderStatus !=='1') {
              return { disabled: true };
            } else {
              return { disabled: false };
            }
          },
        }
        },
        exportConfig: {
            name:"销售订单",
            url: getExportUrl,
        },
        importConfig: {
            url: getImportUrl,
            success: handleSuccess
        },
    })
</script>
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-12 00:53
    关注

    【以下回答由 GPT 生成】

    可以通过以下步骤来解决该问题:

    1. 首先,在rowSelection对象中添加一个selectedRowKeys属性,并将其值设置为空数组。这将用于存储选择的行的keys。
    rowSelection: {
      type: 'checkbox',
      selectedRowKeys: [],
      getCheckboxProps(record: Recordable) {
        if (record.approveStatus !== '1' || record.orderStatus !== '1') {
          return { disabled: true };
        } else {
          return { disabled: false };
        }
      },
    },
    
    1. 然后,修改getCheckboxProps方法,将禁用的选项从selectedRowKeys中移除。
    rowSelection: {
      type: 'checkbox',
      selectedRowKeys: [],
      getCheckboxProps(record: Recordable) {
        if (record.approveStatus !== '1' || record.orderStatus !== '1') {
          const index = rowSelection.selectedRowKeys.indexOf(record.key);
          if (index > -1) {
            rowSelection.selectedRowKeys.splice(index, 1);
          }
          return { disabled: true };
        } else {
          return { disabled: false };
        }
      },
    },
    
    1. 接下来,添加一个onChange事件处理函数,用于更新selectedRowKeys数组。
    rowSelection: {
      type: 'checkbox',
      selectedRowKeys: [],
      getCheckboxProps(record: Recordable) {
        if (record.approveStatus !== '1' || record.orderStatus !== '1') {
          const index = rowSelection.selectedRowKeys.indexOf(record.key);
          if (index > -1) {
            rowSelection.selectedRowKeys.splice(index, 1);
          }
          return { disabled: true };
        } else {
          return { disabled: false };
        }
      },
      onChange(selectedRowKeys: string[] | number[]) {
        rowSelection.selectedRowKeys = selectedRowKeys;
      }
    },
    
    1. 最后,在模板中使用selectedRowKeys数组。
    <div>
      <BasicTable @register="registerTable" :rowSelection="rowSelection" :expandedRowKeys="expandedRowKeys" @expand="handleExpand"/>
    </div>
    

    这样,当用户选择某个CheckBox时,只有值为true且未被禁用的选项会被添加到selectedRowKeys数组中。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 10月11日

悬赏问题

  • ¥15 adv找不到可向其添加属性的有效项目。
  • ¥15 cesm2.2.0移植问题。./manage_externals/checkout_externals
  • ¥15 ntp对时中的时标问题
  • ¥35 pcb上电后,不一会儿,主控过热烧毁
  • ¥15 ubuntu,windows,文件传输,Linux
  • ¥15 北斗定位,cors,无人机,图传
  • ¥15 Unity热更新框架问题
  • ¥20 如何提交icra的附录.应该在哪里提交
  • ¥20 请教yolov8出现如下bug怎么办
  • ¥30 Armoury Crate 无法打开链接然后卸载了无法安装回去