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 - HTML的request类
Jan 09 Javascript
WEB页子窗口(showModalDialog和showModelessDialog)使用说明
Oct 25 Javascript
jQuery)扩展jQuery系列之一 模拟alert,confirm(一)
Dec 04 Javascript
再谈JavaScript线程
Jul 10 Javascript
js实现的彩色方块飞舞奇幻效果
Jan 27 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
Aug 15 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
Sep 19 Javascript
jquery实现左右轮播图效果
Sep 28 jQuery
vue如何通过id从列表页跳转到对应的详情页
May 01 Javascript
微信小程序非跳转式组件授权登录的方法示例
May 22 Javascript
webpack4之如何编写loader的方法步骤
Jun 06 Javascript
JavaScript实现抖音罗盘时钟
Oct 11 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
【COS正片】蕾姆睡衣cos,纯洁可爱被治愈了 cn名濑弥七
2020/03/02 日漫
全国FM电台频率大全 - 17 湖北省
2020/03/11 无线电
用PHP实现读取和编写XML DOM代码
2010/04/07 PHP
PDO::inTransaction讲解
2019/01/28 PHP
slice函数的用法 之不错的应用
2006/12/29 Javascript
js每次Title显示不同的名言
2008/09/25 Javascript
JavaScript词法作用域与调用对象深入理解
2012/11/29 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
javascript实现数独解法
2015/03/14 Javascript
JavaScript中instanceof运算符的使用示例
2016/06/08 Javascript
浅谈JS的基础类型与引用类型
2016/09/13 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
2017/10/27 Javascript
深入理解vue中slot与slot-scope的具体使用
2018/01/26 Javascript
vue树形结构获取键值的方法示例
2018/06/21 Javascript
vue props传值失败 输出undefined的解决方法
2018/09/11 Javascript
vue-rx的初步使用教程
2018/09/21 Javascript
使用jQuery动态设置单选框的选中效果
2018/12/06 jQuery
jquery实现Ajax请求的几种常见方式总结
2019/05/28 jQuery
[39:19]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第二场 11.26
2020/11/30 DOTA
理解Python中函数的参数
2015/04/27 Python
Djang中静态文件配置方法
2015/07/30 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
2019/02/19 Python
详解Python3中setuptools、Pip安装教程
2019/06/18 Python
Python如何使用argparse模块处理命令行参数
2019/12/11 Python
Anaconda+Pycharm环境下的PyTorch配置方法
2020/03/13 Python
Python爬虫入门有哪些基础知识点
2020/06/02 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
2020/07/14 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
2020/10/15 Python
css3的focus-within选择器的使用
2020/05/11 HTML / CSS
使用HTML5的File实现base64和图片的互转
2013/08/01 HTML / CSS
行政副总岗位职责
2014/02/23 职场文书
弘扬民族精神演讲稿
2014/05/07 职场文书
2015年保险公司个人工作总结
2015/05/22 职场文书
安全生产标语口号
2015/12/26 职场文书
Spring Boot两种全局配置和两种注解的操作方法
2021/06/29 Java/Android
PYTHON 使用 Pandas 删除某列指定值所在的行
2022/04/28 Python