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 相关文章推荐
Apply an AutoFormat to an Excel Spreadsheet
Jun 12 Javascript
JS的数组的扩展实例代码
Jul 09 Javascript
MC Dialog js弹出层 完美兼容多浏览器(5.6更新)
May 06 Javascript
仿新浪微博登陆邮箱提示效果的js代码
Aug 02 Javascript
js获取系统的根路径实现介绍
Sep 08 Javascript
详解javascript实现瀑布流绝对式布局
Jan 29 Javascript
js,jq,css多方面实现简易下拉菜单功能
May 13 Javascript
React中上传图片到七牛的示例代码
Oct 10 Javascript
node.js学习笔记之koa框架和简单爬虫练习
Dec 13 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
Apr 17 Javascript
vue.js实现数据库的JSON数据输出渲染到html页面功能示例
Aug 03 Javascript
Vue 解决路由过渡动画抖动问题(实例详解)
Jan 05 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 XML操作的各种方法解析(比较详细)
2010/06/17 PHP
php链表用法实例分析
2015/07/09 PHP
大家都应该掌握的PHP关联数组使用技巧
2015/12/25 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
laravel配置Redis多个库的实现方法
2019/04/10 PHP
PHP常见的序列化与反序列化操作实例分析
2019/10/28 PHP
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
javascript中match函数的用法小结
2014/02/08 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
2014/03/14 Javascript
Javascript堆排序算法详解
2014/12/03 Javascript
简介JavaScript中search()方法的使用
2015/06/06 Javascript
js实现碰撞检测特效代码分享
2016/10/16 Javascript
JavaScript常用正则函数用法示例
2017/01/23 Javascript
微信小程序实现电影App导航和轮播
2020/11/30 Javascript
[00:02]DOTA2新版本使用PA至宝后暴击展示
2014/11/19 DOTA
[02:04]完美世界城市挑战赛秋季赛报名开始 谁是solo路人王?
2019/10/10 DOTA
使用Python实现微信提醒备忘录功能
2018/12/04 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
2019/06/24 Python
python实现替换word中的关键文字(使用通配符)
2020/02/13 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
2020/03/27 Python
JupyterNotebook 输出窗口的显示效果调整方法
2020/04/13 Python
django模板获取list中指定索引的值方式
2020/05/14 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
微信小程序实现可实时改变转速的css3旋转动画实例代码
2018/09/11 HTML / CSS
Urban Outfitters德国官网:美国跨国生活方式零售公司
2018/05/21 全球购物
美国滑板店:Tactics
2020/11/08 全球购物
南京某软件公司的.net面试题
2015/11/30 面试题
线程问题:wait()方法是定义在哪个类里面
2015/07/07 面试题
银行职员思想汇报
2013/12/31 职场文书
大学生怎样写好自荐信
2014/02/25 职场文书
报纸媒体创意广告词
2014/03/17 职场文书
大学专科自荐信
2014/06/17 职场文书
小学生放飞梦想演讲稿
2014/08/26 职场文书
向女朋友道歉的话
2015/01/20 职场文书
幼儿园工作总结2015
2015/04/01 职场文书
加班费申请报告
2015/05/15 职场文书