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+json实现的搜索加分页效果
Mar 31 Javascript
jQeury淡入淡出需要注意的问题
Sep 08 Javascript
JavaScript 继承使用分析
May 12 Javascript
JavaScript中提前声明变量或函数例子
Nov 12 Javascript
jQuery三级下拉列表导航菜单代码分享
Apr 15 Javascript
常用的JQuery函数及功能小结
Mar 24 Javascript
使用jQuery UI库开发Web界面的简单入门指引
Apr 22 Javascript
原生JS下拉加载插件分享
Dec 26 Javascript
vue中如何去掉空格的方法实现
Nov 09 Javascript
详解写好JS条件语句的5条守则
Feb 28 Javascript
Javascript ParentNode和ChildNode接口原理解析
Mar 16 Javascript
vue项目,代码提交至码云,iconfont的用法说明
Jul 30 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
Oracle 常见问题解答
2006/10/09 PHP
PHP获取本周第一天和最后一天示例代码
2014/02/24 PHP
PHP实现的购物车类实例
2015/06/17 PHP
mysql_escape_string()函数用法分析
2016/04/25 PHP
javascript 程序库的比较(一)之DOM功能
2010/04/07 Javascript
表单的焦点顺序tabindex和对应enter键提交
2013/01/04 Javascript
扩展IE中一些不兼容的方法如contains、startWith等等
2014/01/09 Javascript
基于JQuery实现的Select级联
2014/01/27 Javascript
如何让浏览器支持jquery ajax load 前进、后退功能
2014/06/12 Javascript
Javascript简单实现面向对象编程继承实例代码
2015/11/27 Javascript
sea.js常用的api简易文档
2016/11/15 Javascript
JavaScript中 ES6变量的结构赋值
2018/07/10 Javascript
用npm-run实现自动化任务的方法示例
2019/01/14 Javascript
配置eslint规范项目代码风格
2019/03/11 Javascript
如何使用JavaScript实现栈与队列
2019/06/24 Javascript
在react中使用vue的状态管理的方法示例
2020/05/02 Javascript
vue添加锚点,实现滚动页面时锚点添加相应的class操作
2020/08/10 Javascript
[01:45]IMBATV TI4前线报道-选手到达
2014/07/07 DOTA
[54:27]TNC vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[01:00:11]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第一场 2月7日
2021/03/11 DOTA
Python实现给文件添加内容及得到文件信息的方法
2015/05/28 Python
使用Django简单编写一个XSS平台的方法步骤
2019/03/25 Python
Pandas分组与排序的实现
2019/07/23 Python
基于Python新建用户并产生随机密码过程解析
2019/10/08 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
2019/10/28 Python
Python confluent kafka客户端配置kerberos认证流程详解
2020/10/12 Python
Html5 滚动穿透的方法
2019/05/13 HTML / CSS
StubHub德国:购买和出售门票
2017/09/06 全球购物
塑料制成的可水洗的编织平底鞋和鞋子:Rothy’s
2018/09/16 全球购物
Antler英国官网:购买安特丽行李箱、拉杆箱
2019/08/25 全球购物
一家外企的面试题目(C/C++面试题,C语言面试题)
2014/03/24 面试题
Ajax请求总共有多少种Callback
2016/07/17 面试题
办公室内勤工作职责
2013/12/11 职场文书
《夏夜多美》教学反思
2014/02/17 职场文书
销售类求职信
2014/06/13 职场文书
列车乘务员工作不细心检讨书
2014/10/07 职场文书