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 强制类型转换函数
May 17 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
Oct 16 Javascript
js实现简单的可切换选项卡效果
Apr 10 Javascript
JavaScript实现图片自动加载的瀑布流效果
Apr 11 Javascript
js基于cookie方式记住返回页面用法示例
May 27 Javascript
解析JavaScript中的字符串类型与字符编码支持
Jun 24 Javascript
jquery配合.NET实现点击指定绑定数据并且能够一键下载
Oct 28 Javascript
使用 vue.js 构建大型单页应用
Feb 10 Javascript
详解Puppeteer 入门教程
May 09 Javascript
详解javascript 正则表达式之分组与前瞻匹配
May 30 Javascript
JS的Ajax与后端交互数据的实例
Aug 08 Javascript
浅谈在vue中使用mint-ui swipe遇到的问题
Sep 27 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
什么是短波收听SWL
2021/03/01 无线电
文件上传类
2006/10/09 PHP
学习php分页代码实例
2013/10/24 PHP
注意!PHP 7中不要做的10件事
2016/09/18 PHP
Laravel如何创建服务器提供者实例代码
2019/04/15 PHP
Smarty模板类内部原理实例分析
2019/07/03 PHP
php的优点总结 php有哪些优点
2019/07/19 PHP
Laravel 前端资源配置教程
2019/10/18 PHP
js中几种去掉字串左右空格的方法
2006/12/25 Javascript
JavaScript Object的extend是一个常用的功能
2009/12/02 Javascript
Javascript学习笔记2 函数
2010/01/11 Javascript
Javascript的getYear、getFullYear、getUTCFullYear异同分享
2011/11/30 Javascript
推荐一个封装好的getElementsByClassName方法
2014/12/02 Javascript
jQuery 遍历函数详解
2015/07/05 Javascript
js实现图片放大和拖拽特效代码分享
2015/09/05 Javascript
javascript回到顶部特效
2016/07/30 Javascript
BootStrap Table 设置height表头与内容无法对齐的问题
2016/12/28 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
Vue.Js中的$watch()方法总结
2017/03/23 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
2017/04/25 jQuery
详解axios在node.js中的post使用
2017/04/27 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
xmlplus组件设计系列之选项卡(Tabbar)(5)
2017/05/03 Javascript
小程序实现日历左右滑动效果
2019/10/21 Javascript
js实现消灭星星(web简易版)
2020/03/24 Javascript
Vue elementui字体图标显示问题解决方案
2020/08/18 Javascript
[01:10]DOTA2次级职业联赛 - U5战队宣传片
2014/12/01 DOTA
python运行时间的几种方法
2016/06/17 Python
Python实现小数转化为百分数的格式化输出方法示例
2017/09/20 Python
python 将对象设置为可迭代的两种实现方法
2019/01/21 Python
python__name__原理及用法详解
2019/11/02 Python
详解Django admin高级用法
2019/11/06 Python
纯css3制作的火影忍者写轮眼开眼至轮回眼及进化过程实例
2014/11/11 HTML / CSS
校园之声广播稿
2014/01/31 职场文书
公务员爱岗敬业演讲稿
2014/08/26 职场文书
基层干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书