Element Table 动态合并 添加整行数据

效果如图所

添加整行数据,前面几列还是合并状态

直接上代码

 1 // 获取列表,
 2     getTableDataList() {
 3       this.tableData3 = [
 4         {
 5           all: "a1",
 6           name: "名字1",
 7           value1: "b1",
 8           value2: 1,
 9           value3: "2017年-10月"
10         },
11         {
12           all: "a1",
13           name: "名字2",
14           value1: "b2",
15           value2: "2",
16           value3: "2017年-10月"
17         },
18       ]
19       this.getSpanArr(this.tableData3);
20       this.getSpanArrOne(this.tableData3);
21     },
22     //前行row、当前列column、当前行号rowIndex、当前列号columnIndex四个属性
23     cellMerge({ row, column, rowIndex, columnIndex }) {
24       let length = this.tableData3.length;
25       //第0列比较特殊,单独合并
26       if (columnIndex === 0) {
27         const _row = this.spanArrOne[rowIndex];
28         const _col = _row > 0 ? 1 : 0;
29         return {
30           rowspan: _row,
31           colspan: _col
32         };
33       }
34       //1 2列进行合并
35       if (columnIndex === 1 || columnIndex === 2) {
36         const _row = this.spanArr[rowIndex];
37         const _col = _row > 0 ? 1 : 0;
38         return {
39           rowspan: _row,
40           colspan: _col
41         };
42       }
43     },
44     //1 2 列合并的数据
45     getSpanArr(data) {
46       this.spanArr = []
47       for (var i = 0; i < data.length; i++) {
48         if (i === 0) {
49           this.spanArr.push(1);
50           this.pos = 0;
51         } else {
52           // 判断当前元素与上一个元素是否相同
53           if (data[i].name === data[i - 1].name) {
54             this.spanArr[this.pos] += 1; //需要合并的行数
55             this.spanArr.push(0); //新增被合并的行
56           } else {
57             this.spanArr.push(1);
58             this.pos = i; //新的需要合并的第几行数
59           }
60         }
61       }
62     },
63     //0列合并的数据
64     getSpanArrOne(data) {
65       this.spanArrOne = []
66       for (var i = 0; i < data.length; i++) {
67         if (i === 0) {
68           this.spanArrOne.push(1);
69           this.posOne = 0;
70         } else {
71           this.spanArrOne[this.posOne] += 1; //需要合并的行数
72           this.spanArrOne.push(0); //新增被合并的行
73         }
74       }
75     },
76     // 添加整行
77     addRow(index,row){
78       this.tableData3.splice(index+1,0,row)
79       this.getSpanArr(this.tableData3);
80       this.getSpanArrOne(this.tableData3);
81     },

需要注意的是,每次添加都要重新计算需要合并的行数

原文地址:https://www.cnblogs.com/ImmortalWang/p/11351080.html

时间: 2024-12-31 03:33:55

Element Table 动态合并 添加整行数据的相关文章

架构模式数据源模式之:表数据入口(Table Data Gateway)、行数据入口(Row Data Gateway)、活动记录(Active Record)

一:表数据入口(Table Data Gateway) 表数据入口提供了用于访问单个表或者视图(也包含了联表查询)的所有SQL,通常一个表一个类.其它代码通过它来实现对数据库的交互.基于这个特点,表数据入口和事务脚本代码以及表模块结合的很好. 在查询时候,表数据接口可以返回数据集 或者 DTO 或者 DTO列表.在 事务脚本 代码中已经阐述过了 DTO 以及 DTO 的列表这种形式.但是使用 DTO 这种形式,带来的一个问题是:到处衍生的 DTO,那么,如何减少到处衍生的 DTO 的,见这里<>

BootStrap table动态增删改表格内数据

1 1:添加一个[操作]列 2 3   4 5 { 6 title: "操作", 7 align: 'center', 8 valign: 'middle', 9 width: 160, // 定义列的宽度,单位为像素px 10 formatter: function (value, row, index) { //传入数据 11 return '<button class="btn btn-primary btn-sm" onclick="del(

巧妙使用JQuery Clone 添加多行数据,并更新到数据库的实现代码

web前端代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="BatchAdd.aspx.cs" Inherits="BatchAdd" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/

SqlSever基础 insert 给一个数据库中的表中的一个列一次性添加多行数据

1 code 1 --select * from sysdatabases 2 3 --指定数据库 4 use helloworld 5 --查看该数据库中的Teacher表格列有哪几个 6 select * from Teacher 7 -- 向 teacher表格中的ShengHao一次加入两行数据 8 insert into Teacher(ShengHao) 9 values('女娲娘娘'), 10 ('无盐娘娘') 11 2 show

积跬步,聚小流------oracle便捷修改整行数据

随着知识了解的越来越多,也越来越多的发现了自己的不足,简单记录下这次学到的知识吧. 尽管项目中都是用的oracle,但是实际上对于oracle的应用却不是很足,比方说,如果我查一个表中的数据,例: 这时候的这两条数据是我录入的测试数据,现在我想进行删除操作,可能我很快就能想到相应的sql语句: delete from arc_tobaccotechnician where name like '%是否%' 首先说这是对的,并且是非常快捷的,但是如果测试数据的共同点并不是那么好找呢,或者其它sql

bat 批处理之提取带有关键字的整行数据

用于在log中检索出insert sql语句,主要用于数据恢复 前言: a.txt 里面存放的是 需要查找的关键字 b.bat limian 存放的是执行程序 生成的文件存放在 c.txt(自动创建)中 a.txt 与 b.bat 同级,同时与查找文件同级 b.bat具体内容如下:( 16.log 与17.log 是需要检索的文件,空格隔开) @echo off&setlocal EnableDelayedExpansion for /f "delims=" %%a in ('

Dynamic CRM 2013学习笔记(二十六)Reporting Service报表 动态参数、参数多选全选、动态列、动态显示行字体颜色

上次介绍过CRM里开始报表的一些注意事项:Dynamic CRM 2013学习笔记(十五)报表入门.开发工具及注意事项,本文继续介绍报表里的一些动态效果:动态显示参数,参数是从数据库里查询出来的:参数可以多选或全选:动态地显示列,列不是固定的:根据某一字段的值来动态地显示整行字体的颜色. 下面介绍详细的方法: 一.动态参数.参数多选全选 动态参数: 首先定义一个Dataset: SELECT DISTINCT new_countryId, new_codename AS name FROM ne

05. 取SQL分组中的某几行数据

原文:05. 取SQL分组中的某几行数据 对表中数据分组,有时只需要某列的聚合值:有时却需要返回整行数据,常用的方法有:子查询.ROW_NUMBER.APPLY,总体感觉还是ROW_NUMBER比较直观.测试数据: if OBJECT_ID('testGroup') is not null drop table testGroup GO create table testGroup ( ID int identity primary key, UserID int, OrderID int )

SQL Server中将多行数据拼接为一行数据(一个字符串

方法一: 使用T-SQLDECLARE @Users NVARCHAR(MAX)SET @Users = ” SELECT @Users = @Users + ‘,’ + UserName FROM dbo.[User]WHERE RoleID = 1 SELECT @Users 方法二:使用for xml path(”) 和stuff–使用 自连接.for xml path(”)和stuff合并显示多行数据到一行中 –注–1.计算列可以不用包含在聚合函数中而直接显示,如下面语句的val.–2.