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 相关文章推荐
Prototype Hash对象 学习
Jul 19 Javascript
DIV始终居中的js代码
Feb 17 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
Feb 22 Javascript
JavaScript实现数组随机排序的方法
Jun 26 Javascript
深入理解jquery中的each用法
Dec 14 Javascript
bootstrap中的 form表单属性role=&quot;form&quot;的作用详解
Jan 20 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
Aug 16 Javascript
使用JS中的Replace()方法遇到的问题小结
Oct 20 Javascript
简单了解vue.js数组的常用操作
Jun 17 Javascript
Vue项目中Api的组织和返回数据处理的操作
Nov 04 Javascript
Vue 的双向绑定原理与用法揭秘
May 06 Javascript
ElementUI 修改默认样式的几种办法(小结)
Jul 29 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一次性删除前台checkbox多选内容的方法
2013/09/22 PHP
php分页示例分享
2014/04/30 PHP
PHP判断文章里是否有图片的简单方法
2014/07/26 PHP
PHP小程序支付功能完整版【基于thinkPHP】
2019/03/26 PHP
JavaScript中Function()函数的使用教程
2015/06/04 Javascript
javascript常用功能汇总
2015/07/05 Javascript
JS组件Bootstrap实现弹出框和提示框效果代码
2015/12/08 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
2017/04/13 Javascript
详解nodejs异步I/O和事件循环
2017/06/07 NodeJs
jquery单击文字或图片内容放大并居中显示
2017/06/23 jQuery
Angular2 http jsonp的实例详解
2017/08/31 Javascript
js实现鼠标拖拽div左右滑动
2020/01/15 Javascript
vue实现全屏滚动效果(非fullpage.js)
2020/03/07 Javascript
在Webpack中用url-loader处理图片和字体的问题
2020/04/28 Javascript
原生js实现点击按钮复制内容到剪切板
2020/11/19 Javascript
[02:09]抵达西雅图!中国军团加油!
2014/07/07 DOTA
Python实现在线音乐播放器
2017/03/03 Python
pycharm安装图文教程
2017/05/02 Python
Python基于百度AI的文字识别的示例
2018/04/21 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
2019/01/09 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
Python面向对象之私有属性和私有方法应用案例分析
2019/12/31 Python
浅析Python 抽象工厂模式的优缺点
2020/07/13 Python
安装不同版本的tensorflow与models方法实现
2021/02/20 Python
SOA面试题:如何在SOA中实现松耦合
2013/07/21 面试题
经理秘书找工作求职信
2013/12/19 职场文书
在校大学生的职业生涯规划书
2014/03/14 职场文书
中学生期中自我鉴定
2014/04/20 职场文书
高三学生评语大全
2014/04/25 职场文书
委托书如何写
2014/08/30 职场文书
乡镇机关党员民主评议表自我评价
2014/09/21 职场文书
党员个人整改措施
2014/10/24 职场文书
环保建议书作文300字
2015/09/14 职场文书
《走遍天下书为侣》教学反思
2016/02/22 职场文书
Win10 和 Win11可以共存吗? win10/11产品生命周期/服务更新介绍
2021/11/21 数码科技
win10电脑关机快捷键是哪个 win10快速关机的几种方法
2022/08/14 数码科技