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中this关键字使用方法详解
Mar 08 Javascript
jQuery与getJson结合的用法实例
Aug 07 Javascript
使用javascript插入样式
Mar 14 Javascript
从0开始学Vue
Oct 27 Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
Nov 09 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
Jan 16 Javascript
Angular 表单控件示例代码
Jun 26 Javascript
微信小程序switch开关选择器使用详解
Jan 31 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
Mar 22 Javascript
初学node.js中实现删除用户路由
May 27 Javascript
Vue组件模板及组件互相引用代码实例
Mar 11 Javascript
vue.js实现h5机器人聊天(测试版)
Jul 16 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
php中文件上传的安全问题
2006/10/09 PHP
使用PHP实现蜘蛛访问日志统计
2013/07/05 PHP
迁移PHP版本到PHP7
2015/02/06 PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
2018/04/08 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
2019/03/11 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
PHP 与 js的通信(via ajax,json)
2010/11/16 Javascript
Jquery css函数用法(判断标签是否拥有某属性)
2011/05/28 Javascript
Prototype源码浅析 String部分(四)之补充
2012/01/16 Javascript
javascript不可用的问题探究
2013/10/01 Javascript
javascript常见用法总结
2014/05/22 Javascript
JavaScript获取URL中参数querystring的方法详解
2016/10/11 Javascript
js实现添加删除表格(两种方法)
2017/04/27 Javascript
详解关于Vue版本不匹配问题(Vue packages version mismatch)
2018/09/17 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
js实现ATM机存取款功能
2020/10/27 Javascript
详解原生JS动态添加和删除类
2019/03/26 Javascript
VUE 自定义组件模板的方法详解
2019/08/30 Javascript
vue 路由懒加载中给 Webpack Chunks 命名的方法
2020/04/24 Javascript
Vue Render函数创建DOM节点代码实例
2020/07/08 Javascript
使用PDB简单调试Python程序简明指南
2015/04/25 Python
python实现内存监控系统
2021/03/07 Python
基于Python脚本实现邮件报警功能
2020/05/20 Python
使用Python+Appuim 清理微信的方法
2021/01/26 Python
Python字符串的15个基本操作(小结)
2021/02/03 Python
Ariat英国官网:为世界顶级马术运动员制造最优质的鞋类和服装
2020/02/14 全球购物
德国消费电子产品购物网站:Guter Kauf
2020/09/15 全球购物
大学系主任推荐信范文
2013/12/24 职场文书
教师党性分析材料
2014/02/04 职场文书
销售顾问岗位职责
2014/02/25 职场文书
社区志愿者活动总结
2014/06/26 职场文书
高中同学会活动方案
2014/08/14 职场文书
破坏寝室公物检讨书
2014/11/17 职场文书
报名委托书
2015/01/29 职场文书
办公室主任岗位职责
2015/01/31 职场文书
高中同学会致辞
2015/08/01 职场文书