Vue实现数据表格合并列rowspan效果


Posted in Javascript onNovember 30, 2020

背景

现实中会遇到很多需求,合并列,例如要显示一个名学生的各门课程成绩。

Vue实现数据表格合并列rowspan效果

html实现

使用html实现是比较简单的,利用table标签的rowspan属性即可,代码如下:

<table>
 <thead>
 <tr>
 <th>姓名</th>
 <th>课程数</th>
 <th>课程名称</th>
 <th>成绩</th>
 </tr>
 </thead>
 <tbody>
 <tr>
 <td rowspan="3">
 张三
 </td>
 <td rowspan="3">
 3
 </td>
 <td>语文</td>
 <td>100</td>
 </tr>
 <tr>
 <td>数学</td>
 <td>90</td>
 </tr>
 <tr>
 <td>英语</td>
 <td>80</td>
 </tr>
 </tbody>
</table>

数据结构

在实际工程中,表格数据一般来自后端,以json格式发送到前端后,学生和课程是一对多的关系,json格式数据结构如下:

[
 {
 name: '张三',
 courses: [
 {
 name: '语文',
 score: '100'
 },
 {
 name: '数学',
 score: '90'
 },
 {
 name: '英语',
 score: '80'
 }
 ]
 }
]

Vue实现

我们对比表格结构和json数据结构,分析出结论如下:

1.实际上每个课程对应表格的一行
2.如果是第一列第二列(学生姓名、学生课程数),则应设置其rowspan值为该学生拥有的课程数
3.如果是第一列第二列,则每个学生只需要输出1次该列,因为需要按学生合并列后展示。

分析完1-3条后,代码实现也就简单了:

<html>

<head>
 <style>
 th {
 border: 1px solid black;
 width: 100px;
 }

 td {
 border: 1px solid black;
 }
 </style>
</head>

<body>
 <div id="app">
 <table>
 <thead>
 <th>姓名</th>
 <th>课程数</th>
 <th>课程名称</th>
 <th>成绩</th>
 </thead>
 <tbody>
 <template v-for="(item,index) in students">
  <tr v-for="(m,i) in item.courses">
  <!-- 第1列每个学生只需要展示1次 -->
  <td v-if="i==0" :rowspan="item.courses.length">
  {{item.name}}
  </td>
  <!-- 第2列每个学生只需要展示1次 -->
  <td v-if="i==0" :rowspan="item.courses.length">
  {{item.courses.length}}
  </td>
  <td>{{m.name}}</td>
  <td>{{m.score}}</td>
  </tr>
 </template>
 </tbody>
 </table>
 </div>
 <script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
 <script>
 var vm = new Vue({
 el: "#app",
 data: {
 students: [
  {
  name: '张三',
  courses: [
  {
  name: '语文',
  score: '100'
  },
  {
  name: '数学',
  score: '90'
  },
  {
  name: '英语',
  score: '80'
  }
  ]
  },
  {
  name: '李四',
  courses: [
  {
  name: '语文',
  score: '100'
  },
  {
  name: '数学',
  score: '90'
  }
  ]
  }
 ]
 }
 });
 </script>
</body>

</html>

效果:

Vue实现数据表格合并列rowspan效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
常用的JavaScript WEB操作方法分享
Feb 28 Javascript
通过实例理解javascript中没有函数重载的概念
Jun 03 Javascript
浅谈$('div a') 与$('div&gt;a')的区别
Jul 18 Javascript
AngularJS 表达式详细讲解及实例代码
Jul 26 Javascript
Javascript blur与click冲突解决办法
Jan 09 Javascript
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
Apr 11 jQuery
基于JavaScript定位当前的地理位置
Apr 11 Javascript
Jquery-data的三种用法
Apr 18 jQuery
input file样式修改以及图片预览删除功能详细概括(推荐)
Aug 17 Javascript
JS如何在不同平台实现多语言方式
Jul 16 Javascript
vue动态设置路由权限的主要思路
Jan 13 Vue.js
带你彻底理解JavaScript中的原型对象
Apr 14 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
jQuery实现图片下载代码
Jul 18 #jQuery
You might like
德生BCL3000的电路分析和打磨
2021/03/02 无线电
php的list()的一步操作给一组变量进行赋值的使用
2011/05/18 PHP
PHP使用数组实现队列
2012/02/05 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
2014/01/12 PHP
Yii使用技巧大汇总
2015/12/29 PHP
Laravel中如何增加自定义全局函数详解
2017/05/09 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
Javascript 面向对象 继承
2010/05/13 Javascript
将字符串转换成gb2312或者utf-8编码的参数(js版)
2013/04/10 Javascript
JavaScript中把数字转换为字符串的程序代码
2013/06/19 Javascript
使用typeof方法判断undefined类型
2014/09/09 Javascript
jquery实现红色竖向多级向右展开的导航菜单效果
2015/08/31 Javascript
jQuery的each循环用法简单示例
2016/06/12 Javascript
前端构建工具之gulp的语法教程
2017/06/12 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
简单的Vue SSR的示例代码
2018/01/12 Javascript
webpack打包并将文件加载到指定的位置方法
2018/02/22 Javascript
微信小程序自定义tabBar的踩坑实践记录
2020/11/06 Javascript
JavaScript 中的执行上下文和执行栈实例讲解
2021/02/25 Javascript
Python导入oracle数据的方法
2015/07/10 Python
Python使用Redis实现作业调度系统(超简单)
2016/03/22 Python
python opencv实现任意角度的透视变换实例代码
2018/01/12 Python
用python打印1~20的整数实例讲解
2019/07/01 Python
详解Django将秒转换为xx天xx时xx分
2019/09/27 Python
获取CSDN文章内容并转换为markdown文本的python
2020/09/06 Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
2021/01/13 Python
日本钓鱼渔具和户外用品网上商店:naturum
2016/08/07 全球购物
Internet体系结构
2014/12/21 面试题
应届毕业生求职信范文
2013/12/18 职场文书
爱耳日活动总结
2014/04/30 职场文书
数学系毕业生求职信
2014/05/29 职场文书
教师党员个人整改措施
2014/10/27 职场文书
先进个人主要事迹范文
2015/11/04 职场文书
聊聊JS ES6中的解构
2021/04/29 Javascript
在Python中如何使用yield
2021/06/07 Python
Js类的构建与继承案例详解
2021/09/15 Javascript