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 相关文章推荐
JavaScript isArray()函数判断对象类型的种种方法
Oct 11 Javascript
JavaScript定义类或函数的几种方式小结
Jan 09 Javascript
使用JavaScript 实现各种跨域的方法
May 08 Javascript
Javascript自定义排序 node运行 实例
Jun 05 Javascript
js中点击空白区域时文本框与隐藏层的显示与影藏问题
Aug 26 Javascript
Javascript中call的两种用法实例
Dec 13 Javascript
基于javascript实现的搜索时自动提示功能
Dec 26 Javascript
JS动态修改iframe高度和宽度的方法
Apr 01 Javascript
JS实现黑色大气的二级导航菜单效果
Sep 18 Javascript
js动态获取子复选项并设计全选及提交的实现方法
Jun 24 Javascript
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
Feb 20 Javascript
vuex(vue状态管理)的特殊应用案例分享
Mar 03 Javascript
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
我的论坛源代码(七)
2006/10/09 PHP
PHP5.2下chunk_split()函数整数溢出漏洞 分析
2007/06/06 PHP
php操作excel文件 基于phpexcel
2010/07/02 PHP
apache+codeigniter 通过.htcaccess做动态二级域名解析
2012/07/01 PHP
解析PHP中intval()等int转换时的意外异常情况
2013/06/21 PHP
ThinkPHP文件缓存类代码分享
2015/04/22 PHP
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
eval与window.eval的差别分析
2011/03/17 Javascript
深入理解JavaScript系列(17):面向对象编程之概论详细介绍
2015/03/04 Javascript
jQuery支持动态参数将函数绑定到事件上的方法
2015/03/17 Javascript
Java File类的常用方法总结
2015/03/18 Javascript
AngularJs实现分页功能不带省略号的代码
2016/05/30 Javascript
Bootstrap中的Panel和Table全面解析
2016/06/13 Javascript
微信小程序入门教程
2016/11/18 Javascript
node.js实现回调的方法示例
2017/03/01 Javascript
关于vue中 $emit的用法详解
2018/04/12 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
2019/09/28 Javascript
[48:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第二场 1月29日
2021/03/11 DOTA
python+matplotlib绘制旋转椭圆实例代码
2018/01/12 Python
python针对excel的操作技巧
2018/03/13 Python
Python3实现腾讯云OCR识别
2018/11/27 Python
使用pyinstaller逆向.pyc文件
2019/12/20 Python
tensorflow-gpu安装的常见问题及解决方案
2020/01/20 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
2020/07/06 Python
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
英语专业毕业个人求职自荐信
2013/09/21 职场文书
仓库规划计划书
2014/04/28 职场文书
运动会跳远广播稿5篇
2014/09/17 职场文书
计划生育证明书写要求
2014/09/17 职场文书
乡镇群众路线专项整治方案
2014/11/03 职场文书
践行党的群众路线心得体会
2014/11/05 职场文书
小学优秀班主任材料
2014/12/17 职场文书
大学生求职自荐信范文
2015/03/04 职场文书
2015年会计个人工作总结
2015/04/02 职场文书
法制主题班会教案
2015/08/13 职场文书
pandas时间序列之pd.to_datetime()的实现
2022/06/16 Python