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 相关文章推荐
基于jquery的finkyUI插件与Ajax实现页面数据加载功能
Dec 03 Javascript
JS中动态添加事件(绑定事件)的代码
Jan 09 Javascript
基于jquery的cookie的用法
Jan 10 Javascript
自己动手制作jquery插件之自动添加删除行的实现
Oct 13 Javascript
js简单实现让文本框内容逐个字的显示出来
Oct 22 Javascript
jquery中的工具使用方法$.isFunction, $.isArray(), $.isWindow()
Aug 09 Javascript
Js获取图片原始宽高的实现代码
May 17 Javascript
微信小程序 图片绝对定位(背景图片)
Apr 05 Javascript
vue2.0安装style/css loader的方法
Mar 14 Javascript
vue全局使用axios的方法实例详解
Nov 22 Javascript
浅谈发布订阅模式与观察者模式
Apr 09 Javascript
Vue 实现对quill-editor组件中的工具栏添加title
Aug 03 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获得当前的脚本网址
2007/12/10 PHP
php实现把url转换迅雷thunder资源下载地址的方法
2014/11/07 PHP
php使用function_exists判断函数可用的方法
2014/11/19 PHP
php获取数组元素中头一个数组元素值的实现方法
2014/12/20 PHP
详解PHP素材图片上传、下载功能
2019/04/12 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
2019/11/13 PHP
ExtJS 2.0实用简明教程之应用ExtJS
2009/04/29 Javascript
javascript 必知必会之closure
2009/09/21 Javascript
Javascript闭包用法实例分析
2015/01/23 Javascript
JavaScript判断微信浏览器实例代码
2016/06/13 Javascript
jQuery通用的全局遍历方法$.each()用法实例
2016/07/04 Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
2016/10/10 Javascript
微信小程序 网络API 上传、下载详解
2016/11/09 Javascript
Bootstrap缩略图与警告框学习使用
2017/02/08 Javascript
vue子组件使用自定义事件向父组件传递数据
2017/05/27 Javascript
react路由配置方式详解
2017/08/07 Javascript
详解vue中axios请求的封装
2019/04/08 Javascript
JavaScript原型继承和原型链原理详解
2020/02/04 Javascript
如何检测JavaScript中的死循环示例详解
2020/08/30 Javascript
JavaScript实现浏览器网页自动滚动并点击的示例代码
2020/12/05 Javascript
[23:21]Ti4 冒泡赛第二轮DK vs C9 2
2014/07/14 DOTA
Python查看多台服务器进程的脚本分享
2014/06/11 Python
PyTorch线性回归和逻辑回归实战示例
2018/05/22 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
2018/08/31 Python
Python列表元素常见操作简单示例
2019/10/25 Python
Python使用uuid库生成唯一标识ID
2020/02/12 Python
Python之变量类型和if判断方式
2020/05/05 Python
Python pip 常用命令汇总
2020/10/19 Python
使用CSS3中的calc()属性来以算式表达尺寸数值
2016/06/06 HTML / CSS
美国购买和销售礼品卡平台:Raise
2017/01/13 全球购物
英国家用电器购物网站:Hughes
2018/02/23 全球购物
双语教学实施方案
2014/03/23 职场文书
工作说明书格式
2014/07/29 职场文书
对外汉语教师推荐信
2015/03/27 职场文书
谢师宴家长致辞
2015/07/27 职场文书
python编写函数注意事项总结
2021/03/29 Python