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 静态动态成员 and 信息的封装和隐藏
May 29 Javascript
EasyUI中的tree用法介绍
Nov 01 Javascript
web性能优化之javascript性能调优
Dec 28 Javascript
jquery中常用的函数和属性详细解析
Mar 07 Javascript
jQuery自动添加表单项的方法
Jul 13 Javascript
jQuery图片轮播滚动切换代码分享
Apr 20 Javascript
jQuery siblings()用法实例详解
Apr 26 Javascript
AngularJS 依赖注入详解和简单实例
Jul 28 Javascript
JS查找字符串中出现次数最多的字符
Sep 05 Javascript
jQuery实现jQuery-form.js实现异步上传文件
Apr 28 jQuery
JS实现4位随机验证码
Oct 19 Javascript
vue实现在data里引入相对路径
Jun 05 Vue.js
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
PHP 数组实例说明
2008/08/18 PHP
php实现最简单的MVC框架实例教程
2014/09/08 PHP
Laravel 5框架学习之路由、控制器和视图简介
2015/04/07 PHP
一张表搞清楚php is_null、empty、isset的区别
2015/07/07 PHP
PHP编程入门的基本语法知识点总结
2016/01/26 PHP
利用javascript实现一些常用软件的下载导航
2009/08/03 Javascript
javascript转换字符串为dom对象(字符串动态创建dom)
2010/05/10 Javascript
js下通过prototype扩展实现indexOf的代码
2010/12/08 Javascript
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
2013/08/15 Javascript
关闭ie窗口清除Session的解决方法
2014/01/10 Javascript
Windows 系统下安装和部署Egret的开发环境
2014/07/31 Javascript
纯js模拟div层弹性运动的方法
2015/07/27 Javascript
js实现页面跳转的几种方法小结
2016/05/16 Javascript
浅谈JS中的三种字符串连接方式及其性能比较
2016/09/02 Javascript
将angular-ui的分页组件封装成指令的方法详解
2017/05/10 Javascript
原生JS+Canvas实现五子棋游戏
2020/05/28 Javascript
vue判断input输入内容全是空格的方法
2018/03/02 Javascript
vue项目引入Iconfont图标库的教程图解
2018/10/24 Javascript
详解Ant Design of React的安装和使用方法
2018/12/27 Javascript
利用不到200行代码写一款属于你自己的js类库
2019/07/08 Javascript
JavaScript实现滑块验证解锁
2021/01/07 Javascript
Python读取mp3中ID3信息的方法
2015/03/05 Python
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
python批量实现Word文件转换为PDF文件
2018/03/15 Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
2019/06/17 Python
用python求一重积分和二重积分的例子
2019/12/06 Python
在Python中通过threshold创建mask方式
2020/02/19 Python
浅析python字符串前加r、f、u、l 的区别
2021/01/24 Python
使用CSS3实现SVG路径描边动画效果入门教程
2019/10/21 HTML / CSS
详解如何获取localStorage最大存储大小的方法
2020/05/21 HTML / CSS
英国排名第一的冲浪店:Ann’s Cottage
2020/06/21 全球购物
网友共享的几个面试题关于Java和Unix等方面的
2016/09/08 面试题
单位婚育证明范本
2014/11/21 职场文书
2014年小学语文工作总结
2014/12/20 职场文书
如何有效防止sql注入的方法
2021/05/25 SQL Server
CKAD认证中部署k8s并配置Calico插件
2022/03/31 Servers