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实时获取系统当前时间实例代码
Jun 28 Javascript
javascript判断非数字的简单例子
Jul 18 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
Oct 08 Javascript
js插件YprogressBar实现漂亮的进度条效果
Apr 20 Javascript
使用vue.js制作分页组件
Jun 27 Javascript
AngularJS实现按钮提示与点击变色效果
Sep 07 Javascript
vue2.0移除或更改的一些东西(移除index key)
Aug 28 Javascript
JS中的Replace()传入函数时的用法详解
Sep 11 Javascript
原生js实现针对Dom节点的CRUD操作示例
Aug 26 Javascript
在vue中把含有html标签转为html渲染页面的实例
Oct 28 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
Feb 06 Javascript
vue项目中的支付功能实现(微信支付和支付宝支付)
Feb 18 Vue.js
浅谈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
德生S2000南麂列岛台湾FM收听记录
2021/03/02 无线电
简单易用的计数器(数据库)
2006/10/09 PHP
ThinkPHP令牌验证实例
2014/06/18 PHP
PHP 实现从数据库导出到.csv文件方法
2017/07/06 PHP
JavaScript 的方法重载效果
2009/08/07 Javascript
extjs 为某个事件设置拦截器
2010/01/15 Javascript
js本身的局限性 别让javascript做太多事
2010/03/23 Javascript
javascript面向对象包装类Class封装类库剖析
2013/01/24 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
2013/04/19 Javascript
jQuery选择器中含有空格的使用示例及注意事项
2013/08/25 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
2015/10/26 Javascript
编写高质量JavaScript代码的基本要点
2016/03/02 Javascript
vue中使用ueditor富文本编辑器
2018/02/08 Javascript
记一次vue-webpack项目优化实践详解
2019/02/17 Javascript
layui清空,重置表单数据的实例
2019/09/12 Javascript
JS操作json对象key、value的常用方法分析
2019/10/29 Javascript
如何实现iframe父子传参通信
2020/02/05 Javascript
[49:31]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第二场 1月29日
2021/03/11 DOTA
Python的Bottle框架的一些使用技巧介绍
2015/04/08 Python
python通过索引遍历列表的方法
2015/05/04 Python
Python端口扫描简单程序
2016/11/10 Python
Python 获取 datax 执行结果保存到数据库的方法
2019/07/11 Python
使用Python进行中文繁简转换的实现代码
2019/10/18 Python
CSS3的Border-radius轻松制作圆角
2012/12/24 HTML / CSS
HTML5 常见面试题之PC端和移动端区别介绍
2018/01/22 HTML / CSS
德国传统玻璃制造商:Cristalica
2018/04/23 全球购物
Timberland德国官网:靴子、鞋子、衣服、夹克及配件
2019/12/10 全球购物
阿迪达斯印尼官方网站:adidas印尼
2020/02/10 全球购物
餐饮业会计岗位职责
2013/12/19 职场文书
经济类毕业生求职信
2014/06/26 职场文书
房屋租赁合同补充协议
2014/10/11 职场文书
2015年六一儿童节活动总结
2015/02/11 职场文书
2015年端午节活动策划书
2015/05/05 职场文书
学校教学管理制度
2015/08/06 职场文书
应届毕业生的自我评价
2019/06/21 职场文书
搭建zabbix监控以及邮件报警的超级详细教学
2022/07/15 Servers