草庐IT

Element ui表格控件实现多选和单选同时存在的功能

三岁很ok 2023-04-12 原文

要求:Element ui表格控件,实现多选和单选同时存在的功能

完成功能如图所示:

🍉🍉🍉下面这一段来自作者的吐槽,可以直接跳过
[鄙人遇到奇怪需求总是忍不住想要记录一下,因为我很懒!!!(大声吐槽,小声bb) 所以想要去网上看看有没有现成的{但是是我没找到,不然就不会出现这篇文章了},虽然说它不是很复杂👀,但是很遗憾没找到,所以实现这个需求之后,写个笔记记录一下,以防后续遇到。这样我就可以直接照搬呜呜呜TVT]
 

🍉🍉🍉给自己讲解一下,怕后续忘记:首先官网有介绍表格行单选,可通过@current-change事件来触发
值得注意的是js中radio = label 的时候 可以给radio添加选中状态

 

其次,官网有说明Table控件中,多选和单选的事件

思路

1、表格多选:添加一行el-table-column。其中,将type类型设置为selection。
2、表格单选:添加一个插槽,其中添加el-radio,添加绑定事件。
3、将以上俩者结合起来绘制

以下是代码部分(其中包含了表格分页)

html部分
<template>
   <div>
	 <el-table
		 ref="multipleSelection "
		 :locale="{ emptyText: '暂无数据' }" 
		 :data="userList.slice((currentPage - 1) * pagesize, currentPage * pagesize)"
		 style="width: 100%"
		 highlight-currrent-row
		 @selection-change="handleSelectionChange"
		 @current-change="rowChange"
	 >
		<el-table-column  type="selection"  width="55">
		</el-table-column>
		<el-table-column  width="55" label="单选">
			<template slot-scope="scope">
				<!-- 可以手动的修改label的值,从而控制选择哪一项 -->
				<el-radio class="radio"  @change="rowChange(scope.row)" v-model="templateSelection" :label="scope.row.ID">&nbsp;
				</el-radio>
			</template>
		</el-table-column>
		<el-table-column align="center" prop="NO" label="序号" width="150"> </el-table-column>
		<el-table-column align="center" prop="ID" label="标识码" width="250"></el-table-column>				      
	</el-table>
	<div 
		style="height: 5%; width: 100%; overflow-y: auto; overflow-x: auto;">
		 <el-pagination
			 @size-change="handleSizeChange"
			 @current-change="handleCurrentChange"
			 :current-page="currentPage"
			 :page-sizes="[5, 10, 15, 20]"
			 :page-size="pagesize"
			 background
			 layout="total, sizes, prev, pager, next, jumper"
			 :total="userList.length">
		</el-pagination>
	</div>
 </div>
</template>
js部分
var TableMain1 = {
	data() {
		return {	 	
			multiple: true,			//	复选框状态		
			single:true,			//	单选框状态
			multipleSelection: [],	//  多选数据	
			templateSelection: "",  //	当前选择的行的id
			checkList: [],  		//	当前选择的行的数据
			currentPage: 1, 		//	初始页
			pagesize: 5,    		//	每页的数据
			userList: [],   		//	数据
		};
	},
	created() {
		// 在模板渲染成html前调用handleUserList()
		this.handleUserList();
	},
	mounted: function () {
	 	// 在模板渲染成html后执行
	     //_that=this;
	     this.$nextTick(function(){
	         //_that.getData();
	         // console.log(this.$refs);
	       })
	},
	methods:{
		toggleSelection(rows) {
			//复选框多选事件
			if (rows) {
				 rows.forEach(row => {
				      this.$refs.multipleTable.toggleRowSelection(row);
				  });
			} else {
				 //清除选择状态
				 this.$refs.multipleTable.clearSelection();
			}
		},
		handleSelectionChange(val) {
			//复选框勾选事件
			console.log(val);
		},
		singleElection(row) {
			//单击行、单选框勾选事件 
			//console.log(row)
			this.templateSelection = row.ID
			this.checkList = this.userList.filter((item) => item.ID=== row.ID)
		    //console.log('标识码为:'+ row.STRIPTNO);
		},
		handleSizeChange (size) {
		 	// 初始页currentPage、初始每页数据数pagesize和数据data
		 	this.pagesize = size; //每页下拉显示数据
		},
		handleCurrentChange (currentPage) {
			//点击当前页、点击页码
			this.currentPage = currentPage;
		},
		handleUserList() {
			//this.userList = List2;
			//获取后台表格数据
			axios.get('/dmainTable/userList').then(res=>{
					this.userList = res.data.List;
			}).catch(error=>{
					 console.log(error);
			})
		}     
				      
	}
}

大概总结完毕?
那就~后续有问题再补充吧!

有关Element ui表格控件实现多选和单选同时存在的功能的更多相关文章

  1. ruby - 如何根据特征实现 FactoryGirl 的条件行为 - 2

    我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden

  2. ruby-on-rails - Cucumber 是否只是 rspec 的包装器以帮助将测试组织成功能? - 2

    只是想确保我理解了事情。据我目前收集到的信息,Cucumber只是一个“包装器”,或者是一种通过将事物分类为功能和步骤来组织测试的好方法,其中实际的单元测试处于步骤阶段。它允许您根据事物的工作方式组织您的测试。对吗? 最佳答案 有点。它是一种组织测试的方式,但不仅如此。它的行为就像最初的Rails集成测试一样,但更易于使用。这里最大的好处是您的session在整个Scenario中保持透明。关于Cucumber的另一件事是您(应该)从使用您的代码的浏览器或客户端的角度进行测试。如果您愿意,您可以使用步骤来构建对象和设置状态,但通常您

  3. ruby-on-rails - rspec - 如何检查方法是否存在? - 2

    我的模型有defself.empty_building//stuffend我怎样才能对这个现有的进行rspec?,已经尝试过:describe"empty_building"dosubject{Building.new}it{shouldrespond_to:empty_building}endbutgetting:Failure/Error:it{shouldrespond_to:empty_building}expected#torespondto:empty_building 最佳答案 你有一个类方法self.empty_bu

  4. ruby-on-rails - Prawn - 表格单元格内的链接 - 2

    我正在尝试用Prawn生成PDF。在我的PDF模板中,我有带单元格的表格。在其中一个单元格中,我有一个电子邮件地址:cell_email=pdf.make_cell(:content=>booking.user_email,:border_width=>0)我想让电子邮件链接到“mailto”链接。我知道我可以这样链接:pdf.formatted_text([{:text=>booking.user_email,:link=>"mailto:#{booking.user_email}"}])但是将这两行组合起来(将格式化文本作为内容)不起作用:cell_email=pdf.make_c

  5. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

  6. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  7. MIMO-OFDM无线通信技术及MATLAB实现(1)无线信道:传播和衰落 - 2

     MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO

  8. ruby - 如何使用 Ruby 将 CSV 文件读入 HTML 表格? - 2

    我正在尝试将一个简单的CSV文件读入HTML表格以在浏览器中显示,但我遇到了麻烦。这就是我正在尝试的:Controller:defshow@csv=CSV.open("file.csv",:headers=>true)end查看:输出:NameStartDateEndDateQuantityPostalCode基本上我只获取标题,而不会读取和呈现CSV正文。 最佳答案 这最终成为最终解决方案:Controller:defshow#OpenaCSVfile,andthenreaditintoaCSV::Tableobjectforda

  9. 【Java入门】使用Java实现文件夹的遍历 - 2

    遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg

  10. ruby - Arrays Sets 和 SortedSets 在 Ruby 中是如何实现的 - 2

    通常,数组被实现为内存块,集合被实现为HashMap,有序集合被实现为跳跃列表。在Ruby中也是如此吗?我正在尝试从性能和内存占用方面评估Ruby中不同容器的使用情况 最佳答案 数组是Ruby核心库的一部分。每个Ruby实现都有自己的数组实现。Ruby语言规范只规定了Ruby数组的行为,并没有规定任何特定的实现策略。它甚至没有指定任何会强制或至少建议特定实现策略的性能约束。然而,大多数Rubyist对数组的性能特征有一些期望,这会迫使不符合它们的实现变得默默无闻,因为实际上没有人会使用它:插入、前置或追加以及删除元素的最坏情况步骤复

随机推荐