element实现合并单元格通用方法


Posted in Javascript onNovember 13, 2019

主要思路:

  1. 对数据进行处理,写了一个getSpanData通用方法。
  2. 用api中提供的span-method方法。

span-method方法用法:

通过给table传入span-method方法可以实现合并行或列,方法的参数是一个对象,里面包含当前行row、当前列column、当前行号rowIndex、当前列号columnIndex四个属性。该函数可以返回一个包含两个元素的数组,第一个元素代表rowspan,第二个元素代表colspan。 也可以返回一个键名为rowspan和colspan的对象。

通用实例

demo.vue

<el-table
   v-loading="loading"
   ref="singleTable"
   :data="tableData"
   :span-method="handleObjectSpanMethod"
   highlight-current-row
   border
   style="width: 100%;margin-top:10px;"
   max-height="730"
  >

JavaScript

// 查询列表
 queryTableList() {
  getNeeds().then(res => {
   if (res.code === 0) {
   // 表格数据
    this.tableData = res.data
    // 对表格数据进行处理,找出需要合并的单元格
    this.getSpanData(this.tableData)
   } 
  })
 },
// 计算需要合并的单元格
getSpanData(data) {
 // 存放计算好的合并单元格的规则
 this.spanData = []
 for (var i = 0; i < data.length; i++) {
  if (i === 0) {
   this.spanData.push(1)
   this.pos = 0
  } else {
   // 判断当前元素与上一个元素是否相同
   if (data[i].realOpenDate === data[i - 1].realOpenDate) {
    this.spanData[this.pos] += 1
    this.spanData.push(0)
   } else {
    this.spanData.push(1)
    this.pos = i
   }
  }
 }
}
// 合并单元格
handleObjectSpanMethod({ row, column, rowIndex, columnIndex }) {
 // 需要合并的列
 // [0, 1, 2].includes(columnIndex ), 表示合并前三列
 if (columnIndex === 1) {
  const _row = this.spanData[rowIndex]
  const _col = _row > 0 ? 1 : 0
  return {
   rowspan: _row,
   colspan: _col
  }
 }
}

getSpanData中spanData处理后的结构:

element实现合并单元格通用方法

数组中12的值表示需要合并的地方,很好理解,就是找到每行中columnIndex对应要合并的位置。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript面向对象编程(三) 非构造函数的继承
Aug 28 Javascript
ExtJS中文乱码之GBK格式编码解决方案及代码
Jan 20 Javascript
js加入收藏以及使用Jquery更改透明度
Jan 26 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
May 07 Javascript
javascript中拼接HTML字符串的最快、最好的方法
Jun 07 Javascript
使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
Jan 04 Javascript
微信小程序本地缓存数据增删改查实例详解
May 24 Javascript
详解javascript中的变量提升和函数提升
May 24 Javascript
js实现秒表计时器
Dec 16 Javascript
jquery实现图片无缝滚动 蒙版遮蔽效果
Jan 11 jQuery
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
Jul 21 Javascript
vue @click.native 绑定原生点击事件
Apr 22 Vue.js
vue之debounce属性被移除及处理详解
Nov 13 #Javascript
Vue的click事件防抖和节流处理详解
Nov 13 #Javascript
vue表单数据交互提交演示教程
Nov 13 #Javascript
解决vuex数据异步造成初始化的时候没值报错问题
Nov 13 #Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
Nov 13 #Javascript
基于vue-cli3和element实现登陆页面
Nov 13 #Javascript
vue data引入本地图片的两种方式小结
Nov 13 #Javascript
You might like
从零开始 教你如何搭建Discuz!4.1论坛
2006/07/07 PHP
随机广告显示(PHP函数)
2006/10/09 PHP
PHP实现的json类实例
2015/07/28 PHP
PHP实现批量上传单个文件
2015/12/29 PHP
PHP实现动态执行代码的方法
2016/03/25 PHP
PHP入门教程之会话控制技巧(cookie与session)
2016/09/11 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
php使用pecl方式安装扩展操作示例
2019/08/12 PHP
一个符号插入器 中用到的js代码
2007/09/04 Javascript
jQuery实现用方向键控制层的上下左右移动
2013/01/13 Javascript
jQuery创建平滑的页面滚动(顶部或底部)
2013/02/26 Javascript
JS验证身份证有效性示例
2013/10/11 Javascript
Jquery 动态循环输出表格具体方法
2013/11/23 Javascript
Javascript的表单验证-揭开正则表达式的面纱
2016/03/18 Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
2016/07/18 Javascript
Nodejs下用submit提交表单提示cannot post错误的解决方法
2016/11/21 NodeJs
使用Vue动态生成form表单的实例代码
2018/04/26 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
[01:19:11]Ti4 循环赛第二日 NaVi.us vs iG
2014/07/11 DOTA
基于循环神经网络(RNN)实现影评情感分类
2018/03/26 Python
解决tensorflow模型参数保存和加载的问题
2018/07/26 Python
python 3.6.2 安装配置方法图文教程
2018/09/18 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
基于Python实现大文件分割和命名脚本过程解析
2019/09/29 Python
python 爬虫之selenium可视化爬虫的实现
2020/12/04 Python
荷兰之家英文站:Holland at Home
2016/10/26 全球购物
美国牙科折扣计划:DentalPlans.com
2019/08/26 全球购物
介绍一下木马病毒的种类
2015/07/26 面试题
物流专业大学生的自我鉴定
2013/11/13 职场文书
工厂采购员岗位职责
2014/04/08 职场文书
一份文言文检讨书
2014/09/13 职场文书
国际政治学专业推荐信
2014/09/26 职场文书
副总经理党的群众路线教育实践活动个人对照检查材料思想汇报
2014/10/06 职场文书
2014财产信托协议书范本
2014/11/18 职场文书
英文道歉信
2015/01/20 职场文书
Docker容器harbor私有仓库部署和管理
2022/08/05 Servers