最新历史版本 :JS实现固定插入和删除最后一行/多行 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 问题描述

默认的工具栏插入行和删除行按钮操作的是鼠标选中行,单元格的插入行和删除行按钮操作的是当前行,使用插入删除行的 JS 接口可以实现在固定行进行插入和删除。

那如果是希望固定在最后一行进行插入和删除,该如何实现呢?

2023-06-08_16-03-07.gif

1.2 实现思路

利用插入删除行的 JS 接口,结合 Jquery 获取最后一行的单元格id来实现需求。接口说明可以参考:填报预览专有

注1:该方案适用于明细表,其他格式的填报模板需要根据实际情况修改 JS 。

注2:不支持移动端。

2. 示例编辑

2.1 准备数据

新建ds1数据集,从FRDemo取数,sql语句为:SELECT * FROM S产品 limit 5

2.2 设计模板

如图设计模板:

2.3 最后一行插入

给按钮控件「最后一行插入」添加一个点击事件。

JavaScript 代码如下:

var id = $("td[id^=A]:last").attr("id");
//获取A列最后一行的单元格编号
//id^=A代表A列,last代表最后一行
_g().appendReportRC(3, id);
//插入3行

2.4 删除最后一行

给按钮控件「删除最后一行」添加一个点击事件。

JavaScript 代码如下:

var id=$("td[id^=A]:visible:last").attr("id");
//获取A列最后一行的单元格编号
//id^=A代表A列,visible代表可见单元格,last代表最后一行
_g().deleteReportRC(id);
//删除行

2.5 删除最后三行

给按钮控件「删除最后三行」添加一个点击事件。

JavaScript 代码如下:

var td=$("td[id^=A]:visible").slice(-3);
//获取A列最后三行的单元格元素
//id^=A代表A列,visible代表可见单元格,slice(-3)代表最后3行
var id=[];
for(i=0;i<td.length;i++){
id.push(td.eq(i).attr('id'))
//遍历将单元格编号插入数组
}
_g().deleteRows(id);
//删除行

2.6 删除第三行

给按钮控件「删除第三行」添加一个点击事件。

JavaScript 代码如下:

$("table tr").eq(3).remove(); //删除第3行数据,eq(3)表示扩展后的第四行,从0开始

2.7 效果预览

保存模板,填报预览后效果如1.1节所示

3. 模板下载编辑

点击下载模板:固定插入和删除最后行.cpt