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 相关文章推荐
jQuery实现的Email中的收件人效果(按del键删除)
Mar 20 Javascript
javascript随机之洗牌算法深入分析
Jun 07 Javascript
javascript根据时间生成m位随机数最大13位
Oct 30 Javascript
Javascript无参数和有参数类继承问题解决方法
Mar 02 Javascript
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
Apr 01 Javascript
JavaScript中的getDay()方法使用详解
Jun 09 Javascript
javascript事件模型介绍
May 31 Javascript
再谈Javascript中的基本类型和引用类型(推荐)
Jul 01 Javascript
基于VUE选择上传图片并页面显示(图片可删除)
May 25 Javascript
详解使用路由延迟加载 Angular 模块
Oct 12 Javascript
React数据传递之组件内部通信的方法
Dec 31 Javascript
js实现简单掷骰子小游戏
Oct 24 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
PHPThumb PHP 图片缩略图库
2012/03/11 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
2014/07/08 PHP
PHP中mysqli_affected_rows作用行数返回值分析
2014/12/26 PHP
php生成图片缩略图功能示例
2017/02/22 PHP
详解使用php调用微信接口上传永久素材
2017/04/11 PHP
PHP数组常用函数实例小结
2018/08/20 PHP
JS的IE和Firefox兼容性集锦
2006/12/11 Javascript
javascript parseInt 函数分析(转)
2009/03/21 Javascript
flexigrid 参数说明
2010/11/23 Javascript
什么是DOM(Document Object Model)文档对象模型
2012/03/05 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
2015/06/25 Javascript
基于jQuery通过jQuery.form.js插件实现异步上传
2015/12/13 Javascript
js验证框架实现代码分享
2016/05/18 Javascript
Javascript+CSS3实现进度条效果
2016/10/28 Javascript
Vue 仿百度搜索功能实现代码
2017/02/16 Javascript
JS解决position:sticky的兼容性问题的方法
2017/10/17 Javascript
详解Ubuntu安装angular-cli遇到的坑
2018/09/08 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
2019/07/25 Javascript
详解Element-UI中上传的文件前端处理
2019/08/07 Javascript
Vue实现手机扫描二维码预览页面效果
2020/05/28 Javascript
Python re模块介绍
2014/11/30 Python
使用Python的Scrapy框架编写web爬虫的简单示例
2015/04/17 Python
Python之py2exe打包工具详解
2017/06/14 Python
python GUI实例学习
2017/11/21 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
CSS3的column-fill属性对齐列内容高度的用法详解
2016/07/01 HTML / CSS
软件缺陷的分类都有哪些
2014/08/22 面试题
EJB timer的种类
2014/10/28 面试题
单位消防安全制度
2014/01/12 职场文书
民主评议党员自我评价材料
2014/09/18 职场文书
向雷锋同志学习倡议书
2015/04/27 职场文书
2015年小学一年级班主任工作总结
2015/05/21 职场文书
大学生党课感想
2015/08/11 职场文书
医生行业员工的辞职信
2019/06/24 职场文书
Python深度学习之Pytorch初步使用
2021/05/20 Python
python中%格式表达式实例用法
2021/06/18 Python