vue通过数据过滤实现表格合并


Posted in Javascript onNovember 30, 2020

基于vue通过数据过滤实现表格合并,供大家参考,具体内容如下

需求

  • 基于vue渲染的数据表格
  • 需要对相同的列进行合并

思路

自从使用了vue,就再也不想直接操作dom节点了,所以还是对数据操作。

要合并单元格需要用到rowspan属性,所有想法是针对数据添加rowspan属性使其多行显示,但下面的行再去渲染就重复了,所以用hidden 隐藏掉。

所以,针对每一行数据 ,用rowspan和display来控制每一个单元格的合并行数和是否显示

代码

<table id="search_table" class="table table-bordered table-striped" cellspacing="0" width="100%">
 <thead>
 <tr class="table_bg">
 <th class="" colspan="12">征期日历信息</th>
 </tr>
 <tr class="cell_bg">
 <th class="" style="">月份</th>
 <th class="" style="" >征期</th>
 <th class="" style="" >缴款期</th>
 <th class="" style="" >税种</th>
 </tr>
 </thead>
 <tbody id="tbody">

 <tr class="" v-for="(i,index) in result">
 <td :rowspan="i.ydspan" :class="{hidden: i.yddis}" class="text-center">
 {{i.yd}}
 </td>
 <td :rowspan="i.zqspan" :class="{hidden: i.zqdis}">
 {{i.zq}}
 </td>
 <td <%--:rowspan="i.jkqspan" :class="{hidden: i.jkqdis}"--%>>
 {{i.jkq}}
 </td>
 <td>
 {{i.sz}}
 </td>
 </tr>
 </tbody>
</table>

这里,对需要合并的单元格添加 :rowspan=”i.ydspan” :class=”{hidden: i.yddis}”

接着,设计一个算法,对用于渲染table渲染的数组,每个数据项添加两个属性,rowspan和hidden,计算出rowspan的值为 本列中该 值相同的行数,(当然,数据在sql中是经过group by的)以及依据rowspan的值计算hidden的值是否显示true/false,最后将此改变后的数组输出。

然而 ,需求是复杂的。

 vue通过数据过滤实现表格合并

如图,要求第二列不能跨过第一列的维度合并,所以,没有办法一劳永逸,只能分别处理

先对月份处理,再对征期处理。

talk is cheap ,show you the code。

号称是算法,就俩for 循环

combineZQ:function (list) {
 var k = 0;
 let field ="zq";
 while (k < list.length) {
 list[k][field + 'span'] = 1;
 list[k][field + 'dis'] = false;
 for (var i = k + 1; i <= list.length - 1; i++) {
 if (list[k][field] == list[i][field] && list[k][field] != ''&&list[k]['yd']==list[i]['yd']&&list[k]['yd']!='') {
 list[k][field + 'span']++;
 list[k][field + 'dis'] = false;
 list[i][field + 'span'] = 1;
 list[i][field + 'dis'] = true;
  } else {
  break;
 }
 }
 k = i;
 }
 return list;
},

名字是拼音没毛病,我也不想,人家大公司的规范(-,-)

combineYd:function (list) {
 var k = 0;
 let field ="yd";
 while (k < list.length) {
 list[k][field + 'span'] = 1;
 list[k][field + 'dis'] = false;
 for (var i = k + 1; i <= list.length - 1; i++) {
 if (list[k][field] == list[i][field] && list[k][field] != '') {
  list[k][field + 'span']++;
  list[k][field + 'dis'] = false;
  list[i][field + 'span'] = 1;
  list[i][field + 'dis'] = true;
  } else {
 break;
 }
 }
 k = i;
 }
 return list;
},

然后。

vue通过数据过滤实现表格合并

这样就搞定了。

效果图: 这里前两列进行了合并

vue通过数据过滤实现表格合并

就是这样,by 一位即将成为 前端 的 后台程序员

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

Javascript 相关文章推荐
js类中获取外部函数名的方法
Aug 19 Javascript
比较简单实用的使用正则三种版本的js去空格处理方法
Nov 18 Javascript
javascript cookies操作集合
Apr 12 Javascript
js变量以及其作用域详解
Jul 18 Javascript
JS实现让网页背景图片斜向移动的方法
Feb 25 Javascript
JavaScript将DOM事件处理程序封装为event.js 出现的低级错误问题
Aug 03 Javascript
ES6新特性四:变量的解构赋值实例
Apr 21 Javascript
Angular浏览器插件Batarang介绍及使用
Feb 07 Javascript
使用Angular CLI从蓝本生成代码详解
Mar 24 Javascript
React diff算法的实现示例
Apr 20 Javascript
JS 逻辑判断不要只知道用 if-else 和 switch条件判断(小技巧)
May 27 Javascript
jQuery列表动态增加和删除的实现方法
Nov 05 jQuery
Vue实现数据表格合并列rowspan效果
Nov 30 #Javascript
小程序分页实践之编写可复用分页组件
Jul 18 #Javascript
在vue项目中使用sass语法问题
Jul 18 #Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
Jul 18 #Javascript
EasyUI 数据表格datagrid列自适应内容宽度的实现
Jul 18 #Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
Jul 18 #Javascript
jquery实现下载图片功能
Jul 18 #jQuery
You might like
德生PL660的电路分析和打磨
2021/03/02 无线电
php array_filter除去数组中的空字符元素
2020/06/21 PHP
php图片处理函数获取类型及扩展名实例
2014/11/19 PHP
codeigniter显示所有脚本执行时间的方法
2015/03/21 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
Chrome下ifame父窗口调用子窗口的问题示例探讨
2014/03/17 Javascript
Node.js实现简单聊天服务器
2014/06/20 Javascript
js使用onmousemove和onmouseout获取鼠标坐标的方法
2015/03/31 Javascript
js实现tab切换效果实例
2015/09/16 Javascript
jQuery实现checkbox列表的全选、反选功能
2016/11/24 Javascript
利用node.js搭建简单web服务器的方法教程
2017/02/20 Javascript
element-ui表格数据转换的示例代码
2018/08/24 Javascript
原生JS实现简单的无缝自动轮播效果
2018/09/26 Javascript
详解vue之自行实现派发与广播(dispatch与broadcast)
2021/01/19 Vue.js
JavaScript实现切换多张图片
2021/01/27 Javascript
python flask 多对多表查询功能
2017/06/25 Python
浅谈python中copy和deepcopy中的区别
2017/10/23 Python
python图像和办公文档处理总结
2019/05/28 Python
python创建n行m列数组示例
2019/12/02 Python
python获取栅格点和面值的实现
2020/03/10 Python
python中tkinter窗口位置\坐标\大小等实现示例
2020/07/09 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
2020/12/09 Python
python中Array和DataFrame相互转换的实例讲解
2021/02/03 Python
CSS3中线性颜色渐变的一些实现方法
2015/07/14 HTML / CSS
html5新增的定时器requestAnimationFrame实现进度条功能
2018/12/13 HTML / CSS
女性时尚网购:Chic Me
2019/07/30 全球购物
会计出纳岗位职责
2013/12/25 职场文书
小学生新学期寄语
2014/01/19 职场文书
《黄山奇石》教学反思
2014/04/19 职场文书
五四青年节演讲稿
2014/05/26 职场文书
2014年法院工作总结
2014/11/24 职场文书
郭明义电影观后感
2015/06/08 职场文书
逃出克隆岛观后感
2015/06/09 职场文书
Pandas加速代码之避免使用for循环
2021/05/30 Python
SpringBoot整合Redis入门之缓存数据的方法
2021/11/17 Redis
python实现学员管理系统(面向对象版)
2022/06/05 Python