ant design vue 表格table 默认勾选几项的操作


Posted in Javascript onOctober 31, 2020

为什么我同样的功能要用react 、vue 都写一遍 ?

啊我真是不是闲的蛋疼啊(~ o ~)~zZ

在 ant design vue 中,表格的第一列是联动的选择框

截一张官方文档图,图示最后一排就是禁用状态

ant design vue 表格table 默认勾选几项的操作

点击 checkbox 会触发onChange , 从而得到selectedRowKeys,selectedRowKeys就是选中的 key 数组。

onChange: (selectedRowKeys, selectedRows) => {
  console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
 },

默认禁用disable 某项时,官方文档给出了例子:

rowSelection() {
   const { selectedRowKeys } = this;
   return {
    onChange: (selectedRowKeys, selectedRows) => {
     console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
    },
    getCheckboxProps: record => ({
     props: {
      disabled: record.name === 'Disabled User', // Column configuration not to be checked
      name: record.name,
     }
    }),
   }
  }

主要是getCheckboxProps 里面的disabled 属性控制的。

默认选中某项时,需要 getCheckboxProps 里面的defaultChecked 属性控制:

业务场景:勾选了几项保存之后,下次进来编辑还是需要展示之前勾选的项,这时候就用到了默认勾选的属性

之前只贴了核心逻辑,好多人好像没看懂,我把整体的都贴上来了。

核心代码defaultChecked: selectedRowKeys.includes(record.id) 的思路就是所有表格里所有包含已选中项的id,都给他默认选中

data () {
  return {
   // ... 
   record: '',
   rowSelection: {
    selectedRowKeys: [],
    onChange: this.onSelectChange
   }
 },
 methods: {
   handleEdit (record) {
   //...省略我的业务逻辑
    if (record) {
    //...省略我的业务逻辑
    let selectedRowKeys =
     (record.roleIdList.length > 0 && record.roleIdList.split(',')) || [];
    this.rowSelection = {
     selectedRowKeys: selectedRowKeys,
     onChange: this.onSelectChange,
     getCheckboxProps: record => {
      return {
       props: {
        defaultChecked: selectedRowKeys.includes(record.id)
       }
      };
     }
    };
   } else {
    this.record = '';
    this.rowSelection = {
     selectedRowKeys: [],
     onChange: this.onSelectChange
    }
   }

 },
 onSelectChange (selectedRowKeys) {
   // 去重 Array.from(new Set(arr))
   this.rowSelection.selectedRowKeys = Array.from(new Set(selectedRowKeys));
 }
 }

ant design vue 版本和 react 版本写法略有不同,disabled 和 defaultChecked 都挂在了props 属性下。

补充知识:Ant-Design-Pro中Table组件rowSelection方法的一些坑

如下所示:

<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中的某个值。

以上这篇ant design vue 表格table 默认勾选几项的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js几个验证函数代码
Mar 25 Javascript
深入浅析Bootstrap列表组组件
May 03 Javascript
JavaScript绑定事件监听函数的通用方法
May 14 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
Oct 20 Javascript
seajs模块之间依赖的加载以及模块的执行
Oct 21 Javascript
折叠菜单及选择器的运用
Feb 03 Javascript
浅谈VUE单页应用首屏加载速度优化方案
Aug 28 Javascript
js使用formData实现批量上传
Mar 27 Javascript
vue实现form表单与table表格的数据关联功能示例
Jan 29 Javascript
浅谈VUE中演示v-for为什么要加key
Jan 16 Javascript
vue中的过滤器及其时间格式化问题
Apr 09 Javascript
JS中准确判断变量类型的方法
Jun 01 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
Oct 31 #Javascript
Ant design vue中的联动选择取消操作
Oct 31 #Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
Oct 31 #Javascript
vue中可编辑树状表格的实现代码
Oct 31 #Javascript
Ant Design Pro 之 ProTable使用操作
Oct 31 #Javascript
react ant Design手动设置表单的值操作
Oct 31 #Javascript
解决pycharm双击但是无法打开的情况
Oct 31 #Javascript
You might like
php和js交互一例-PHP教程,PHP应用
2007/01/03 PHP
解析php取整的几种方式
2013/06/25 PHP
PHP错误和异长常处理总结
2014/03/06 PHP
php实现按照权重随机排序数据的方法
2015/01/09 PHP
php数组去除空值函数分享
2015/02/02 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
2019/09/02 PHP
jquery JSON的解析方式
2009/07/25 Javascript
JavaScript 权威指南(第四版) 读书笔记
2009/08/11 Javascript
微信企业号开发之微信考勤百度地图定位
2015/09/11 Javascript
JS与jQuery遍历Table所有单元格内容的方法
2015/12/07 Javascript
详解js中构造流程图的核心技术JsPlumb
2015/12/08 Javascript
json实现添加、遍历与删除属性的方法
2016/06/17 Javascript
使用vue构建移动应用实战代码
2017/08/02 Javascript
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
NodeJS实现自定义流的方法
2018/08/01 NodeJs
JavaScript实现动态添加、移除元素或属性的方法分析
2019/01/03 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
简单了解Javscript中兄弟ifream的方法调用
2019/06/17 Javascript
vue-cli3项目升级到vue-cli4 的方法总结
2020/03/19 Javascript
vue过滤器实现日期格式化的案例分析
2020/07/02 Javascript
javascript递归函数定义和用法示例分析
2020/07/22 Javascript
js+h5 canvas实现图片验证码
2020/10/11 Javascript
python+ffmpeg视频并发直播压力测试
2018/03/06 Python
Django使用Celery异步任务队列的使用
2018/03/13 Python
Python不使用int()函数把字符串转换为数字的方法
2018/07/09 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
python3.6 如何将list存入txt后再读出list的方法
2019/07/02 Python
Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
2020/07/14 Python
详解CSS3浏览器兼容
2016/12/14 HTML / CSS
葬礼司仪主持词
2014/03/31 职场文书
大学生就业意向书范文
2014/04/01 职场文书
乡镇三严三实学习心得体会
2014/10/13 职场文书
2014年财务经理工作总结
2014/12/08 职场文书
《桂花雨》教学反思
2016/02/19 职场文书
vue-cropper插件实现图片截取上传组件封装
2021/05/27 Vue.js
python热力图实现的完整实例
2022/06/25 Python