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动态拼接正则表达式的两种方法
Mar 04 Javascript
jquery实现的导航固定效果
Apr 28 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
Mar 03 Javascript
jquery.mousewheel实现整屏翻屏效果
Aug 30 Javascript
js 动态给元素添加、移除事件的实现方法
Jul 19 Javascript
Bootstrap3 内联单选和多选框
Dec 29 Javascript
微信小程序实现简单input正则表达式验证功能示例
Nov 30 Javascript
jquery.pagination.js分页使用教程
Oct 23 jQuery
JavaScript 判断数据类型的4种方法
Sep 11 Javascript
vue 避免变量赋值后双向绑定的操作
Nov 07 Javascript
js闭包的9个使用场景
Dec 29 Javascript
vue如何清除浏览器历史栈
May 25 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
也谈php网站在线人数统计
2008/04/09 PHP
ThinkPHP实现事务回滚示例代码
2014/06/23 PHP
从零开始学YII2框架(一)通过Composer安装Yii2框架
2014/08/20 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
JavaScript的Cookies
2008/01/16 Javascript
js获得当前系统日期时间的方法
2015/05/06 Javascript
Window.Open打开窗体和if嵌套代码
2016/04/15 Javascript
JS事件添加和移出的兼容写法示例
2016/06/20 Javascript
bootstrap快速制作后台界面
2016/12/05 Javascript
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
2018/01/20 Javascript
Node.js Buffer用法解读
2018/05/18 Javascript
解决jQuery使用append添加的元素事件无效的问题
2018/08/30 jQuery
webpack中如何加载静态文件的方法步骤
2019/05/18 Javascript
使用webpack搭建vue项目及注意事项
2019/06/10 Javascript
layUI实现列表查询功能
2019/07/27 Javascript
electron 安装,调试,打包的具体使用
2019/11/06 Javascript
openlayers实现地图弹窗
2020/09/25 Javascript
微信小程序中target和currentTarget的区别小结
2020/11/06 Javascript
python登录豆瓣并发帖的方法
2015/07/08 Python
matplotlib绘制动画代码示例
2018/01/02 Python
在Python 中同一个类两个函数间变量的调用方法
2019/01/31 Python
python 实现人和电脑猜拳的示例代码
2020/03/02 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
2020/04/01 Python
python中的插入排序的简单用法
2021/01/19 Python
详解CSS3中的box-sizing(content-box与border-box)
2019/04/19 HTML / CSS
Canvas实现贝赛尔曲线轨迹动画的示例代码
2019/04/25 HTML / CSS
加拿大便宜的隐形眼镜商店:Clearly
2016/09/15 全球购物
开业庆典策划方案
2014/02/18 职场文书
小学课外活动总结
2014/07/09 职场文书
班组拓展活动方案
2014/08/14 职场文书
组工干部演讲稿
2014/09/02 职场文书
会计稽核岗位职责
2015/04/13 职场文书
优秀范文:《但愿人长久》教学反思3篇
2019/10/24 职场文书
详解Python requests模块
2021/06/21 Python
redis客户端实现高可用读写分离的方式详解
2021/07/04 Redis
go goth封装第三方认证库示例详解
2022/08/14 Golang