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 相关文章推荐
JS实现浏览器菜单命令
Sep 05 Javascript
js 弹出框 替代浏览器的弹出框
Oct 29 Javascript
js获取select选中的option的text示例代码
Dec 19 Javascript
用Jquery选择器计算table中的某一列某一行的合计
Aug 13 Javascript
JS实现表单验证功能(验证手机号是否存在,验证码倒计时)
Oct 11 Javascript
React服务端渲染(总结)
Jul 01 Javascript
使用JS动态显示文本
Sep 09 Javascript
基于javascript中的typeof和类型判断(详解)
Oct 27 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
Jun 26 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
Nov 10 Javascript
vue 计算属性和侦听器的使用小结
Jan 25 Vue.js
Vue项目打包部署到apache服务器的方法步骤
Feb 01 Vue.js
小程序分页实践之编写可复用分页组件
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 论坛采集程序 模拟登陆,抓取页面 实现代码
2009/07/09 PHP
PHP实现批量生成App各种尺寸Logo
2015/03/19 PHP
windows平台中配置nginx+php环境
2015/12/06 PHP
Smarty模板配置实例简析
2019/07/20 PHP
背景音乐每次刷新都可以自动更换
2007/02/01 Javascript
jquery插件 cluetip 关键词注释
2010/01/12 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
2013/01/17 Javascript
JS简单实现元素复制示例附图
2013/11/19 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
原生js和jquery实现图片轮播淡入淡出效果
2015/04/23 Javascript
jQuery动态效果显示人物结构关系图的方法
2015/05/07 Javascript
JavaScript调用浏览器打印功能实例分析
2015/07/17 Javascript
深入探究AngularJS框架中Scope对象的超级教程
2016/01/04 Javascript
JavaScript function函数种类详解
2016/02/22 Javascript
JavaScript 数组- Array的方法总结(推荐)
2016/07/21 Javascript
ES6解构赋值的功能与用途实例分析
2017/10/31 Javascript
微信小程序使用checkbox显示多项选择框功能【附源码下载】
2017/12/11 Javascript
vue 指令之气泡提示效果的实现代码
2018/10/18 Javascript
快速对接payjq的个人微信支付接口过程解析
2019/08/15 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
2019/09/25 Javascript
基于JavaScript实现简单的轮播图
2021/03/03 Javascript
Python中对列表排序实例
2015/01/04 Python
python回调函数中使用多线程的方法
2017/12/25 Python
python设置值及NaN值处理方法
2018/07/03 Python
Flask实现图片的上传、下载及展示示例代码
2018/08/03 Python
Form表单及django的form表单的补充
2019/07/25 Python
Django上线部署之IIS的配置方法
2019/08/22 Python
Unix控制后台进程都有哪些进程
2016/09/22 面试题
优秀研究生主要事迹
2014/06/03 职场文书
学校社会实践活动总结
2014/07/03 职场文书
2014领导班子“四风问题”对照检查材料思想汇报(执法局)
2014/09/21 职场文书
企业授权委托书范本
2014/09/22 职场文书
民主生活会剖析材料
2014/09/30 职场文书
幼师个人总结范文
2015/02/28 职场文书
严以修身专题学习研讨会发言材料
2015/11/09 职场文书
Python中json.load()和json.loads()有哪些区别
2021/06/07 Python