vue+elementUI实现 分页表格的单选或者多选、及禁止部分选择
一、vue+elementUI实现 分页表格前的多选
多选效果图:
.jpg)
代码如下:
<el-table
ref="multipleTable"
:data="listData"
tooltip-effect="dark"
:default-sort="{ prop: 'date', order: 'descending' }"
:stripe="true"
:max-height="TABLEHEIGHT"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" min-width="55"></el-table-column>
<el-table-column label="ID" prop="id" align="left" width="80"></el-table-column> <div class="city-list-body-pagination">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-size="pageSize"
layout="total, prev, pager, next, jumper"
:total="total"
style="height:40px;city-height:40px;"
></el-pagination>
</div> export default class carAcct extends Vue {
private multipleSelection: any = []
private listData: any = []
private currentPage = 1
private total = 0
private pageSize = 20
private TABLEHEIGHT = document.documentElement.clientHeight - 272 private handleSizeChange (e: any) {
this.pageSize = e
this.listPage()
}
private handleCurrentChange (e: any) {
this.currentPage = e
this.listPage()
}
private handleSelectionChange (val: any) {
this.multipleSelection = val
}
}
一、vue+elementUI实现 分页表格前的单选
单选效果图:
.jpg)
主要是使用elementUI提供的table中的toggleRowSelection(row, selected)方法,
*该方法用于多选表格,切换某一行的选中状态,如果使用了第二个参数,则是设置这一行选中与否(selected 为 true 则选中)
这和上面的多选差不多完全一样,只是在选择方法 handleSelectionChange中加上判断:
1 if (val.length > 1) {
2 (this.$refs.multipleTable as any).toggleRowSelection(val[0], false)
3 val.splice(0, 1)
4 }
特别说明一下:因为我用的TypeScript,而TypeScript 又是强类型检查,所以 this.$refs.multipleTable 改成了 (this.$refs.multipleTable as any),不然会报以下错误:
.jpg)
如果不是使用的TypeScript,可以直接写成以下格式:
if (val.length > 1) {
this.$refs.multipleTable.toggleRowSelection(val[0], false)
val.splice(0, 1)
}
总代码如下:
<el-table
ref="multipleTable"
:data="listData"
tooltip-effect="dark"
:default-sort="{ prop: 'date', order: 'descending' }"
:stripe="true"
:max-height="TABLEHEIGHT"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" min-width="55"></el-table-column>
<el-table-column label="ID" prop="id" align="left" width="80"></el-table-column> <div class="city-list-body-pagination">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-size="pageSize"
layout="total, prev, pager, next, jumper"
:total="total"
style="height:40px;city-height:40px;"
></el-pagination>
</div> export default class carAcct extends Vue {
private multipleSelection: any = []
private listData: any = []
private currentPage = 1
private total = 0
private pageSize = 20
private TABLEHEIGHT = document.documentElement.clientHeight - 272 private handleSizeChange (e: any) {
this.pageSize = e
this.listPage()
}
private handleCurrentChange (e: any) {
this.currentPage = e
this.listPage()
}
private handleSelectionChange (val: any) {
if (val.length > 1) {
(this.$refs.multipleTable as any).toggleRowSelection(val[0], false)
val.splice(0, 1)
}
this.multipleSelection = val
}
}
3、禁止部分选择
首先我们实现多选: 手动添加一个el-table-column,设type属性为selection即可;然后设置 selectable 属性来决定该行数据是否选中。
<template>
<el-table
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
@selection-change="handleSelectionChange">
<el-table-column
type="selection"
:selectable="checkSelectable"
width="55">
</el-table-column>
......
</el-table>
</template>
设置禁止选中的条件:
checkSelectable(row) {
return row.date == '2016-05-03'
},
若返回为 true, 则可以选中,否则禁止选中
vue+elementUI实现 分页表格的单选或者多选、及禁止部分选择的更多相关文章
- vue+element-ui 实现分页(根据el-table内容变换的分页)
官方例子 官方提示: 设置layout,表示需要显示的内容,用逗号分隔,布局元素会依次显示.prev表示上一页,next为下一页,pager表示页码列表,除此以外还提供了jumper和total,si ...
- php一些单选、复选框的默认选择方法(示例)
转载 http://www.php.cn/php-weizijiaocheng-360029.html 一. radio和checkbox及php select默认选择的实现代码 1.radio单选框 ...
- vue elementui点击表格当前行radio单选选中
官方文档:https://element.eleme.cn/#/zh-CN/component/radio 参考:https://www.cnblogs.com/steamed-twisted-rol ...
- vue+Element-ui实现分页效果
当我们向后台请求大量数据的时候,并要在页面展示出来,请求的数据可能上百条数据或者更多的时候,并不想在一个页面展示,这就需要使用分页功能来去完成了. 1.本次所使用的是vue2.0+element-ui ...
- vue element-ui 做分页功能之封装
在 vue 项目中的 components 中 创建一个 文件夹,文件夹里创建一个 name(这个名字你随意取).vue <template> <div class=" ...
- vue+element-ui实现分页
我使用得是el-table+el-pagination来实现的, 话不多说,直接上代码 html代码部分 <!-- table --> <el-table :data="s ...
- vue+element-ui 实现分页
<el-table ref="multipleTable" :data="tableData.slice((currentPage-1)*pagesize,curr ...
- vue+element-ui:table表格中的slot 、formatter属性
slot 插槽,table中表示该行内容以自定义方式展示 :formatter 方法,用来格式化内容 Function(row, column, cellValue, index) html < ...
- ElementUI的Table表格添加自定义头CheckBox多选框
在ElmentUI的Table表格组件中,也许你会使用type为selection值的多选框功能,但是此时设置的label属性不生效,不能设置标题名称:有时候我们的需求就是要添加标题名称,那该如何处理 ...
随机推荐
- java中equals与hashCode的重写问题
这几天有一个朋友问我在重写equals和hashCode上出现了问题,最后我帮她解决了问题,同时也整理出来分享给大家 现上Object的equals与HashCode的代码 public boolea ...
- vue学习笔记一
vue 颠覆式的开发方式 解疑 为什么要学习vue? 降低项目的复杂度 就业需要 vue难不难? 特别简单 相比于React,vue有什么优势? 前端三大框架:Angular.React.Vue Vu ...
- Vue官方文档Vue.extend、Vue.component、createElement、$attrs/$listeners、插槽的深入理解
一.Vue.extend({}). 看官网文档介绍,Vue.extend({})返回一个Vue的子类,那么这个Vue子类是啥玩意儿呢?我直观感觉它就是创建出一个组件而已啊,那么它又和Vue.compo ...
- 答应我,用了这个jupyter插件,别再重复造轮子了
1 简介 在使用Python.R等完成日常任务的过程中,可能会经常书写同样或模式相近的同一段代码,譬如每次使用matplotlib绘制图像的时候可以在开头添加下面两行代码来解决中文乱码等显示问题: p ...
- C# 发送邮件通知
web.config <!-- 配置发邮件:邮件访问登录地址--> <add key="HttpsUrl" value="http://localhos ...
- 做SQL解析时遇到的问题
相对于算术表达式,Json和XML等解析,SQL就比较复杂了. 举个例子来说:符号“(”是目前的SqlAnalyzer1.00中作为进入递归的标志之一,到“)”结束,中间是个查询语句.如果测试用例也是 ...
- leetcode刷题-58最后一个单词
题目 给定一个仅包含大小写字母和空格 ' ' 的字符串 s,返回其最后一个单词的长度.如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词. 如果不存在最后一个单词,请返回 0 . 说明:一 ...
- CentOS如何设置IP连接网络
1.登录系统,进入:cd /etc/sysconfig/network-scripts 目录下,如下图: 找到 ifcfg-ens33(文件) 第二步:使用vi编辑器打开ifcfg-ens33文件,使 ...
- 4.FFMPEG-AVFrame
在ffmpeg中,解码前的数据结构体为AVPacket(参考:3.AVPacket使用),而解码后的数据为AVFrame(视频的YUV, RGB, 音频的PCM,数据量更大) 1.AVFrame介绍 ...
- python基础:内置函数zip,map,filter
一.zip zip,就是把俩list,合并到一起,如果想同时循环2个list的时候,可以用zip,会帮你轮流循环两个list 比如: l1=[1,2,3,4,5] l2=['a','b','c','d ...