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 相关文章推荐
js控制框架刷新
Aug 01 Javascript
javascript中运用闭包和自执行函数解决大量的全局变量问题
Dec 30 Javascript
前台js改变Session的值(用ajax实现)
Dec 28 Javascript
JS将制定内容复制到剪切板示例代码
Feb 11 Javascript
jQuery异步验证用户名是否存在示例代码
May 21 Javascript
JavaScript实现按Ctrl键打开新页面
Sep 04 Javascript
js实现class样式的修改、添加及删除的方法
Jan 20 Javascript
D3.js实现散点图和气泡图的方法详解
Sep 21 Javascript
vue+jquery+lodash实现滑动时顶部悬浮固定效果
Apr 28 jQuery
layui使用数据表格实现购物车功能
Jul 26 Javascript
es6中reduce的基本使用方法
Sep 10 Javascript
javascript设计模式之迭代器模式
Jan 30 Javascript
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
php基础知识:类与对象(3) 构造函数和析构函数
2006/12/13 PHP
php实现简单洗牌算法
2013/06/18 PHP
Save a File Using a File Save Dialog Box
2007/06/18 Javascript
javascript中的array数组使用技巧
2010/01/31 Javascript
js本身的局限性 别让javascript做太多事
2010/03/23 Javascript
JavaScript高级程序设计(第3版)学习笔记 概述
2012/10/11 Javascript
Jquery实现点击按钮,连续地向textarea中添加值的实例代码
2014/03/08 Javascript
jQuery $命名冲突解决方案汇总
2014/11/13 Javascript
javascript几个易错点记录
2014/11/26 Javascript
js判断输入字符串是否为空、空格、null的方法总结
2016/06/14 Javascript
AngularJS使用指令增强标准表单元素功能
2016/07/01 Javascript
利用原生JS自动生成文章标题树的实例
2016/08/22 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
2016/10/31 Javascript
js实现图片放大展示效果
2017/08/30 Javascript
详解如何从零开始搭建Express+Vue开发环境
2018/07/17 Javascript
bootstrapTable+ajax加载数据 refresh更新数据
2018/08/31 Javascript
Node.js如何对SQLite的async/await封装详解
2019/02/14 Javascript
微信小程序实现的picker多级联动功能示例
2019/05/23 Javascript
[05:05]给小松五分钟系列 第二期介绍为什么打DOTA2
2014/07/02 DOTA
[01:27]DOTA2电竞之夜 今夜共饮庆功酒
2014/08/02 DOTA
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
python实现html转ubb代码(html2ubb)
2014/07/03 Python
Python字典操作简明总结
2015/04/13 Python
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
Python实现线程状态监测简单示例
2018/03/28 Python
在pycharm下设置自己的个性模版方法
2019/07/15 Python
英国豪华家具和经典家居饰品购物网站:OKA
2020/06/05 全球购物
应届生幼儿园求职信
2013/11/12 职场文书
同学会邀请书大全
2014/01/12 职场文书
幼儿园教师培训制度
2014/01/16 职场文书
“三支一扶”支教教师思想汇报
2014/09/13 职场文书
辩论赛新闻稿
2015/07/17 职场文书
2015年小学总务工作总结
2015/07/21 职场文书
2019求职信大礼包
2019/05/15 职场文书
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL