ElementUI的Table表格添加自定义头CheckBox多选框
在ElmentUI的Table表格组件中,也许你会使用type为selection值的多选框功能,但是此时设置的label属性不生效,不能设置标题名称;有时候我们的需求就是要添加标题名称,那该如何处理呢?当然你可以对其样式做特殊处理,也可以自定义标题,本文将描述如何利用自定义标题来添加多选框和标题名称,特别是在该过程的踩过的雷和填补过的坑。
(一)需求:在Table表格中新增一列用于批量操作当前页的该列,例如:通过多选框来对批量设置该列的两种属性状态,选中时表示全部隐藏,不选中时表示全部显示,若部分隐藏、部分显示时多选框呈现第三种样式状态,一般是短横线表示。
(二)方案:利用Table表格column的header属性。
- 利用插槽进行设置,即slot="header",这样就可以在表头中自定义样式来;若不设置该属性,那么是对列内容进行设置。
- 具体的代码如下:
首先在工程目录下安装element,通过npm i element-ui -S命令安装即可;
然后在工程中引入element,在main.js文件中添加这样两条语句:
import ElementUI from 'element-ui';
Vue.use(ElementUI);
接着,我们在App.vue文件中进行测试,添加如下代码:<template><div id="app"><img src="./assets/logo.png"><el-table :data="tableData" style="width: 100%"><el-table-columnlabel="姓名"prop="name"></el-table-column><el-table-columnlabel="性别"prop="sex"></el-table-column><el-table-column align="right"><template slot="header" slot-scope="scope"><el-checkbox :indeterminate="isIndeterminate" v-model="checkAll"@change="handleCheckAllChange">隐藏</el-checkbox></template><template slot-scope="scope"><el-checkbox v-model="scope.row.checked" @change="handleCheckOneChange">隐藏</el-checkbox></template></el-table-column></el-table><router-view/></div></template><script>export default {name: 'App',data () {return {tableData: [{name: '李时珍',sex: '男',checked: false}, {name: '花木兰',sex: '女',checked: true}],checkAll: false,isIndeterminate: true}},methods: {handleCheckAllChange (val) {console.info('check all change is ', val)this.isIndeterminate = falsethis.tableData.forEach(item => {item.checked = val})},handleCheckOneChange (val) {console.info('check one change is ', val)let totalCount = this.tableData.lengthlet someStatusCount = 0this.tableData.forEach(item => {if (item.checked === val) {someStatusCount++}})this.checkAll = totalCount === someStatusCount ? val : !valthis.isIndeterminate = someStatusCount > 0 && someStatusCount < totalCount}}}</script> - 运行后的效果图如下:

在上图中,我们可以通过表头的隐藏多选框来批量设置列表数据,当我们选中上图“表头隐藏”多选框时,列表中的两个“隐藏”多选框都会被选中;当我们取消“表头隐藏”多选框时,列表中的两个“隐藏”多选框会同时被取消选中;当我们同时选中列表中的两个“隐藏”多选框时表头的“表头隐藏”多选框也会被选中;当我们同时取消列表中两个“隐藏”多选框时表头的“表头隐藏”多选框也会被取消选中;当列表中的两个“隐藏”多选框,一个被选中,另外一个没有被选中时表头的“表头隐藏”多选框会呈现第三种状态,样式本应该会是一条短横线,但是在上图中却没有显示预期的效果,这是在safari浏览器的效果,但是在chrome浏览器中会表现预期的第三种状态效果的。
4. 挖坑说明:

其实之初在添加这个功能的时候我是没有添加slot-scope="scope"属性,因为在开发工具中提示红色的波浪形,表示
'scope' is defined but never used.eslint-plugin-vue
5. 拓展
在自定义其它类型的表头时可以参考上述流程,框架是类似的,千万不要把插槽属性省略了,否则的话会有奇怪的坑出现。
------20200112勉
ElementUI的Table表格添加自定义头CheckBox多选框的更多相关文章
- 表格中的checkbox复选框 全选非全选 公共方法 及提交选中结果
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- element-ui的table表格控件表头与内容列不对齐问题
原文链接:点我 element-ui的table表格控件表头与内容列不对齐问题 解决方法:将以下样式代码添加到index.html.或app.vue中(必须是入口文件,起全局作用!)body .el- ...
- vue基于element-ui的三级CheckBox复选框
最近vue项目需要用到三级CheckBox复选框,需要实现全选反选不确定三种状态.但是element-ui table只支持多选行,并不能支持三级及以上的多选,所以写了这篇技术博文供以后学习使用. 效 ...
- elementUI 学习入门之 checkbox 复选框
CheckBox 复选框 与单选框基本类似.如:按钮样式.带边框.复选框按钮大小. eg: <template> <el-checkbox-group v-model="s ...
- GridPanel列头带有复选框的列
由于工作需要,封装了ExtJS4,GridPanel列头带有复选框的列, 代码如下: /** * 列头带有复选框的列 * */ Ext.define("org.pine.widget.Che ...
- php获取checkbox复选框的内容
php获取checkbox复选框的内容 由于checkbox属性,所有必须把checkbox复选择框的名字设置为一个如果checkbox[],php才能读取,以数据形式,否则不能正确的读取chec ...
- 转 纯CSS设置Checkbox复选框控件的样式
Checkbox复选框是一个可能每一个网站都在使用的HTML元素,但大多数人并不给它们设置样式,所以在绝大多数网站它们看起来是一样的.为什么不把你的网站中的Checkbox设置一个与众不同的样式,甚至 ...
- 【转】纯CSS设置Checkbox复选框控件的样式
Checkbox复选框是一个可能每一个网站都在使用的HTML元素,但大多数人并不给它们设置样式,所以在绝大多数网站它们看起来是一样的.为什么不把你的网站中的Checkbox设置一个与众不同的样式,甚至 ...
- php怎么获取checkbox复选框的内容?
由于checkbox属性,所有必须把checkbox复选择框的名字设置为一个如果checkbox[],php才能读取,以数据形式,否则不能正确的读取checkbox复选框的值哦. <form n ...
随机推荐
- YUM源部署和使用
1.前言 为什么需要内部yum源呢,有可能是业务内部的服务器对外是不通了,居于一些安全方面的考虑.内部yum源又有什么好处呢,第一,速度快:第二,内网可控,外网有问题也不影响内网包的下载和安装等. 2 ...
- 数据结构与算法的实现(c++)之第一天
开发工具:codeblocks 17.12版本 学习视频来自b站 第一天:学习swap交换.冒泡排序 swap交换:swap是几乎所有的排序的最基础部分,代码如下: #include <iost ...
- C语言寒假大作战04
问题 答案 这个作业属于那个课程 https://edu.cnblogs.c0m/campus/zswxy/CST2019-4 这个作业的要求在哪里 https://edu.cnblogs.com/c ...
- 《Python编程:从入门到实践》分享下载
书籍信息 书名:<Python编程:从入门到实践> 原作名:Python Crash Course 作者: [美] 埃里克·马瑟斯 豆瓣评分:9.1分(2534人评价) 内容简介 本书是一 ...
- GO语言slice详解(结合源码)
一.GO语言中slice的定义 slice 是一种结构体类型,在源码中的定义为: src/runtime/slice.go type slice struct { array unsafe.Point ...
- hive执行计划简单分析
原始SQL: select a2.ISSUE_CODE as ISSUE_CODE, a2.FZQDM as FZQDM, a2.FZQLB as FZQLB, a2.FJJDM as FJJDM, ...
- 安装python3.7
首先安装依赖包,centos里面是-devel,如果在ubuntu下安装则要改成-dev,依赖包缺一不可,一步一步复制到终端执行就可以! sudo yum -y groupinstall " ...
- [MacOS]Sublime text3 安装(一)
官网地址 https://www.sublimetext.com/ 直接下载地址(MacOS) https://download.sublimetext.com/Sublime%20Text%20Bu ...
- 解决pycharm打开html页面一直刷新
顺序——> File ——>Project:项目名——>project Structure 右侧的 + Add ContentRoot下面只保留本项目路径,其他全删了 方法2(推荐) ...
- WinFrom 在Devexpress里用GridControl和DataNavigtor进行分页
1,分页嘛先要有个SQL 程序才能写下去 先提供下SQL的思路,对于分页的SQL我之前帖子有介绍,就不一一介绍了 select top pageSize * --显示数量 from (select r ...