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 CSS样式控制 学习笔记
Jul 23 Javascript
jquery中的mouseleave和mouseout的区别 模仿下拉框效果
Feb 07 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
Dec 11 Javascript
一个js控制的导航菜单实例代码
Dec 03 Javascript
node.js入门教程
Jun 01 Javascript
input标签内容改变的触发事件介绍
Jun 18 Javascript
js实现文字垂直滚动和鼠标悬停效果
Dec 31 Javascript
JS简单实现自定义右键菜单实例
May 31 Javascript
Easyui使用Dialog行内按钮布局的实例
Jul 27 Javascript
Vue动态控制input的disabled属性的方法
Jun 26 Javascript
Angular4.x Event (DOM事件和自定义事件详解)
Oct 09 Javascript
JavaScript实现简单轮播图效果
Dec 01 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
ThinkPHP的L方法使用简介
2014/06/18 PHP
PHP常见的6个错误提示及解决方法
2016/07/07 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
2019/04/10 PHP
浅谈PHP array_search 和 in_array 函数效率问题
2019/10/15 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
Javascript查询DBpedia小应用实例学习
2013/03/07 Javascript
JQuery动画animate的stop方法使用详解
2014/05/09 Javascript
三种取消选中单选框radio的方法
2014/09/09 Javascript
jquery.validate使用时遇到的问题
2015/05/25 Javascript
深入讲解AngularJS中的自定义指令的使用
2015/06/18 Javascript
原生JS实现首页进度加载动画
2016/09/14 Javascript
javascript实现秒表计时器的制作方法
2017/02/16 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
2017/03/11 Javascript
使用JQ完成表格隔行换色的简单实例
2017/08/25 Javascript
纯js封装的ajax功能函数与用法示例
2018/05/14 Javascript
jQuery操作事件完整实例分析
2020/01/10 jQuery
VUE使用 wx-open-launch-app 组件开发微信打开APP功能
2020/08/11 Javascript
CentOS 6.5下安装Python 3.5.2(与Python2并存)
2017/06/05 Python
linux安装python修改默认python版本方法
2019/03/31 Python
Python中新式类与经典类的区别详析
2019/07/10 Python
Python常用GUI框架原理解析汇总
2020/12/07 Python
微信浏览器左上角返回按钮拦截功能
2017/11/21 HTML / CSS
销售人员中英文自荐信
2013/09/22 职场文书
中职生自我鉴定范文
2013/10/03 职场文书
业务主管岗位职责
2013/11/20 职场文书
文明礼仪小标兵事迹
2014/01/12 职场文书
物流专业自荐信
2014/05/23 职场文书
感恩祖国演讲稿
2014/09/09 职场文书
12.4法制宣传日标语
2014/10/08 职场文书
自荐信怎么写
2015/03/04 职场文书
廉政承诺书2015
2015/04/28 职场文书
2016秋季田径运动会广播稿
2015/12/21 职场文书
廉洁自律心得体会2016
2016/01/13 职场文书
Python实现Excel文件的合并(以新冠疫情数据为例)
2022/03/20 Python
在vue中import()语法不能传入变量的问题及解决
2022/04/01 Vue.js
基于Redission的分布式锁实战
2022/08/14 Redis