关于Element-ui中table默认选中toggleRowSelection问题

目录
  • Element-ui中table默认选中toggleRowSelection
    • 一.toggleRowSelection
    • 二.操作
    • 三.案例
  • Element-ui踩坑之表格选中toggleRowSelection问题

Element-ui中table默认选中toggleRowSelection

一.toggleRowSelection

toggleRowSelection(row, selected)接受两个参数,row传递被勾选行的数据,selected设置是否选中

注意:调用toggleRowSelection这个方法 需要获取真实dom 所以需要注册 ref 来引用它

二.操作

(一).默认选中

1.当数据源固定在table的

<script>
export default {
	mounted() {
    	this.$refs.multipleTable.toggleRowSelection(this.tableData3[2],true);
	}
}
</script>
 

(二).点击tr选中

1.在table中设置 @row-click="handleCurrentChange"

row-click  点击行事件

<template>
	<el-table :data="tableData3"  ref="multipleTable" @row-click="handleCurrentChange">
	</el-table>
</template>
<script>
export default {
	methods: {
		handleCurrentChange(row, event, column){
			this.$refs.multipleTable.toggleRowSelection(row,true);//点击选中
		}
    }
}
</script>

(三).获取选中的值

1.设置table 中@selection-change="selsChange"

2.data 中设置sels:[]

<template>
	<el-table :data="tableData3"  ref="multipleTable" @row-click="handleCurrentChange" @selection-change="selsChange">
	</el-table>
</template>
<script>
export default {
	methods: {
		selsChange( val){
			this.sels=val;
			console.log(this.sels)
		}
    }
}
</script>

三.案例

1.table tr 点击 复选框选中  再次点击 复选框取消选中

①设置一个全局函数

exports.install = function (Vue, options) {
    //删除数组 指定的元素
    Vue.prototype.removeByValue=function(arr, val){
        for(var i=0; i<arr.length; i++) {
            if(arr[i] == val) {
                arr.splice(i, 1);
                break;
            }
        }
    };
};

②table.vue

<template>
	<el-table :data="tableData3"  ref="multipleTable" @row-click="handleCurrentChange" @selection-change="selsChange">
		<el-table-column type="selection" width="55" ></el-table-column>
		<el-table-column type="index" label="序号" width="60"></el-table-column>
		<el-table-column prop="sex" label="性别" width="100" :formatter="formatSex"></el-table-column>
		<el-table-column prop="date" label="日期"></el-table-column>
		<el-table-column prop="name" label="姓名"></el-table-column>
		<el-table-column prop="address" label="地址"></el-table-column>
	</el-table>
</template>
<script>
export default {
	data() {
		return {
	        tableData3: [{
	        	id:'1',
				date: '2016-05-03',
				name: '嘎哈和',
				address: '上海市普陀区金沙江路 1518 弄',
				sex:'1'
	        }, {
	        	id:'2',
				date: '2016-05-02',
				name: '王小虎',
				address: '上海市普陀区金沙江路 1518 弄',
				sex:'0'
	        }, {
	        	id:'3',
				date: '2016-05-02',
				name: '莫默模',
				address: '上海市普陀区金沙江路 1518 弄',
				sex:'-1'
	        }],
	        arrID:[],

	    }
	},
	methods: {
		formatSex: function (row, column, cellValue, index) {
			return row.sex == 1 ? '男' : row.sex == 0 ? '女' : '未知';
		},
		// 点击事情
        handleCurrentChange(row, event, column){
        	var same=false;
            if(this.arrID.length > 0){
				for(var i=0; i<this.arrID.length ;i++){
					if(this.arrID[i]==row.id){
						same=true;
						this.removeByValue(this.arrID, row.id);
						break;
					}
				}
				if(same==true){
	            	this.$refs.multipleTable.toggleRowSelection(row,false);
	            }else{
	            	this.$refs.multipleTable.toggleRowSelection(row,true);
	            	this.arrID.push(row.id);
	            }
            }else{
            	this.$refs.multipleTable.toggleRowSelection(row,true);
        		this.arrID.push(row.id);
            }
        },
        selsChange(val){
        	var valId=[];
        	for(var i=0;i<val.length;i++){
        		var arrIDsame=false;
        		valId.push(val[i].id);
        	}
        	this.arrID=valId;
        }
    },
    mounted() {
        this.$refs.multipleTable.toggleRowSelection(this.tableData3[2],true);//默认选中
    }
}
</script>
<style>
</style>

Element-ui踩坑之表格选中toggleRowSelection问题

今天遇到一个表格选择默认的问题,表格当前页没有值,但是默认还是选中的,这个时候想要删除表格选择:

this.$nextTick(()=>{
   this.$refs.multipleTable.selection.forEach((select,index)=>{
      if(select.id === this.selectedTableData[data].id){
           this.$refs.multipleTable.toggleRowSelection(select,false);
      }
   })
})
  • 要点1,加this.$nextTick(()=>{});
  • 要点2,选择的值要从table的selection中取,应该key的变化问题。

由于篇幅较短,再加一点之前踩的坑记录:

仅对 type=selection 的列有效,类型为 Boolean,为 true 则会在数据更新之后保留之前选中的数据(需指定 row-key)

:row-key="getRowKeys"
//多选时需要
getRowKeys(row) {
  return row.id;
},

这种翻页之类的多选就会保留数据。

再说一个想要清空表格的所有选择:

this.$refs.multipleTable.clearSelection()

还有全选表格行:

this.$refs.multipleTable.toggleAllSelection()

后面遇到再做补充……

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

(0)

相关推荐

  • vue基础之ElementUI表格详解

    目录 ElementUI 表格 示例:一个基本的表格 el-table的属性 el-table-column的属性 多级表头 获取表格,重点说下!!! 单选 多选 排序 筛选 自定义列 展开行 总结 ElementUI 表格 前置工作: 安装好vue和elemetUI.如果是按需引入,请确保Table.TableColumn模块已经引入 示例:一个基本的表格 <template> <el-table :data="tableData" stripe="tru

  • 基于ElementUI中Table嵌套实现多选的示例代码

    前言: 写这个是因为帮朋友修改项目中的bug 我也是第一次写这个功能,有不对的希望大家指正,如果看完有帮助点个赞! 代码中关键是js中Tree的路径查找这个核心,有不懂的自行百度 多了不说了,有需要的可以私信找我要代码,来看下我怎么实现的 思路: 从头开始看这个需求,我们需要知道用到哪写东西 1.表格Table 2.多选&全选 3.嵌套数据(下拉操作) 正好我们可以找下ElementUI官方文档 找到了我们需要用到的API 在嵌套数据的时候需要使用tree-props 选中数据的时候使用togg

  • Element 默认勾选表格 toggleRowSelection的实现

    官网尽管提供了toggleRowSelection方法,但没有提供demo实例. 通过了解,结合vue的特殊属性ref引用到Dom元素上,再执行dom上的toggleRowSelection方法. 以下通过三种不同的数据来源实现table默认勾选对应的列: 1.固定写在data数据里: 注意el-table上有一个ref="table"的属性 <div id="app"> <template> <el-table :data="

  • Vue中Element的table多选表格如何实现单选

    目录 Element的table多选表格实现单选 vue table单选逻辑 Element的table多选表格实现单选 效果图 1.在多选表格的基础上进行处理, 呈现单选表格的作用 2.主要使用的是ElementUI多选表格中的方法 链接 2.1 select 事件 当用户手动勾选数据行的 Checkbox 时触发的事件 参数selection, row 2.2 row-click 事件 当某一行被点击时会触发该事件 参数 row, column, event 2.3 selection-ch

  • 关于Element-ui中table默认选中toggleRowSelection问题

    目录 Element-ui中table默认选中toggleRowSelection 一.toggleRowSelection 二.操作 三.案例 Element-ui踩坑之表格选中toggleRowSelection问题 Element-ui中table默认选中toggleRowSelection 一.toggleRowSelection toggleRowSelection(row, selected)接受两个参数,row传递被勾选行的数据,selected设置是否选中 注意:调用toggle

  • Element UI中table单元格合并的解决过程

    目录 引言 解决思路: 1.格式化后台返回的数据(根据实际数据格式处理) 2.在 data 中定义数据,需要合并几列就定义几个数组和索引 3.定义合并函数 4.table 组件属性 span-method 的单元格合并方法: 完整代码: 总结 引言 项目中遇到表格单元格合并的需求,在此记录整个解决过程. 项目使用的是 Element UI,表格使用的是 table 组件.Element UI 的 table 表格组件中对单元格进行合并,需要使用 table 组件的 span-method 属性.

  • Vue2.5 结合 Element UI 之 Table 和 Pagination 组件实现分页功能

    2017年底了,总结了这一年多来的前端之路,Vue从入门到放弃,再二进宫,从 Vue1.0 持续跟踪到 Vue2.5.结合公司的一些实际项目,也封装了一些比较实用的组件. 由于现在公司管理平台主要运用Element UI,索性就结合组件Table 和 Pagination 封装了一个支持页面切换的Table组件,不啰嗦,直接上代码. 2.实现思路 2.1.Element UI 引入(整体引入) main.js // Element UI import Element from 'element-

  • element UI 中的 el-tree 实现 checkbox 单选框及 bus 传递参数功能

    el-tree 单选功能 在日常项目开发中,会经常遇到,树形结构的查询方式,为了快速方便开发,常常会使用到快捷的ui组件去快速搭树形结构,这里我用的是 element ui 中的 el-tree .第一次接触这种功能的时候也是各种网站查询,虽然也都能实现功能,但是都会有一些小问题,就很难受,那么我们废话不多说(好像也说了不少呢),直接上效果. el-tree 单选 html 代码 *** 注: load 和 lazy 属性不是需要的粘贴时请删除.(只有需要懒加载的树才需要,关于怎样构建懒加载树以

  • vue2.0 + element UI 中 el-table 数据导出Excel的方法

    1.安装相关依赖 主要是两个依赖 npm install --save xlsx file-saver 如果想详细看着两个插件使用,请移步github. https://github.com/SheetJS/js-xlsx https://github.com/eligrey/FileSaver.js 2.组件里头引入 import FileSaver from 'file-saver' import XLSX from 'xlsx' 3.组件methods里写一个方法 exportExcel

  • 关于element ui中el-cascader的使用方式

    目录 element ui中el-cascader使用 例→ 代码 element中el-cascader使用及自定义key名 element ui中el-cascader使用 要想实现进入页面直接选中选择器中的选项 例→ 那v-model绑定的值必须是数组形式的!!(element ui官方文档中没提到这一点好像,我也是试了很多次才发现的) 代码 <el-form-item label="分类:" prop="region" class="regi

  • Element UI中v-infinite-scroll无限滚动组件使用详解

    目录 一.v-infinite-scroll无限滚动组件使用详解 二.组件无限加载原因及解决方式 三.总结 总结 一.v-infinite-scroll无限滚动组件使用详解 1.v-infinite-scroll="load" //load无限滚动加载的方法 2.infinite-scroll-disabled //是否禁用无限滚动加载 3.infinite-scroll-delay //节流时延,单位为ms 4.infinite-scroll-distance //触发加载的距离阈值

  • Web Components实现类Element UI中的Card卡片

    目录 引言 Web Components 核心组成 1. Custom Elements 2. Shadow DOM 3. templates 和 slots 完整代码 Web Components vs Vue Components Web Components 生命周期回调函数 优点 and 缺点 七.基于web components的框架 引言 Web Components 是一个浏览器原生支持的组件化方案,允许你创建新的自定义.可封装.可重用的HTML 标记.不用加载任何外部模块,直接就

  • element UI中在 el-select 与 el-tree 结合组件实现过程

    前言 项目上实现某个功能,使用到了 el-select 和 el-tree 组合实现,记录下两者结合的实现过程. 要求根据项目接口提供的数据,el-tree 里的数据是一次性返回来的,点击最后一层级时,请求接口,在点击层级下方追加数据追加的数据要显示勾选框,可进行勾选,且是单选勾选后需要返回勾选的层级以及它的父级 实现效果如下: 数据回显效果: 实现关键部分 el-tree里的显示勾选框不符合当前“追加的数据要显示勾选框,可进行勾选”这个需求,所以我修改了el-tree的源码进行使用. 追加子级

  • ng-repeat中Checkbox默认选中的方法教程

    Angularjs的ng-repeat是用来循环产生呈现数据. 当我们需要在ng-repeat循环中呈现一系列Checkbox时,某些checkbox选项是默认选中的. 在ASP.NET MVC程序中的Entity,准备一些数据: public IEnumerable<Car> Cars() { return new List<Car>() { {new Car() { ID = 1, Name = "玛莎拉蒂",Selected=false }}, {new

随机推荐