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实现仿银行密码输入框效果的代码
Dec 13 Javascript
suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)
Dec 20 Javascript
js将iframe中控件的值传到主页面控件中的实现方法
Mar 11 Javascript
jQuery对下拉框,单选框,多选框的操作
Feb 21 Javascript
Javascript中With语句用法实例
May 14 Javascript
深入浅析JS的数组遍历方法(推荐)
Jun 15 Javascript
js 上传文件预览的简单实例
Aug 16 Javascript
基于JavaScript实现的折半查找算法示例
Apr 14 Javascript
Angularjs 与 bower安装和使用详解
May 11 Javascript
解读vue生成的文件目录结构及说明
Nov 27 Javascript
vue.js提交按钮时进行简单的if判断表达式详解
Aug 08 Javascript
浅谈vue.watch的触发条件是什么
Nov 07 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获取某个目录大小的代码
2008/09/10 PHP
解析PHP中intval()等int转换时的意外异常情况
2013/06/21 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
PHP设计模式之委托模式定义与用法简单示例
2018/08/13 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
js setTimeout opener的用法示例详解
2013/10/23 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
2013/11/18 Javascript
JS图片无缝、平滑滚动代码
2014/03/11 Javascript
jQuery实现带动画效果的二级下拉导航方法
2015/03/11 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
2015/05/16 Javascript
JS实现alert中显示换行的方法
2015/12/17 Javascript
jQuery侧边栏实现代码
2016/05/06 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
vue、react等单页面项目应该这样子部署到服务器
2018/01/03 Javascript
微信小程序Flex布局用法深入浅出分析
2019/04/25 Javascript
写一个Vue loading 插件
2020/11/09 Javascript
ESLint 是如何检查 .vue 文件的
2020/11/30 Vue.js
[59:00]OG vs TNC 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python文件操作整理汇总
2014/10/21 Python
5种Python单例模式的实现方式
2016/01/14 Python
python实现扫描ip地址的小程序
2019/04/16 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
2019/05/15 Python
一文了解Python并发编程的工程实现方法
2019/05/31 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
2019/11/28 Python
python各层级目录下import方法代码实例
2020/01/20 Python
python 装饰器的实际作用有哪些
2020/09/07 Python
Yves Rocher捷克官方网站:植物化妆品的创造者
2019/07/31 全球购物
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
华为慧通面试题
2012/09/11 面试题
《盲人摸象》教学反思
2014/02/16 职场文书
《掌声》教学反思
2014/02/23 职场文书
绩效管理实施方案
2014/03/19 职场文书
护士演讲稿优秀范文
2014/04/30 职场文书
python 实现定时任务的四种方式
2021/04/01 Python
深入理解MySQL中MVCC与BufferPool缓存机制
2022/05/25 MySQL