点击单元格,获取相关属性存入页面,点击按钮时,取出相关属性并向下填充
最终效果是这样的,先任意点击一个有值的单元格,然后再点击按钮“批量填充”,就能实现将刚才点击的单元格值复制到同一列下方所有单元格中了。
1、模板属性增加事件-加载结束,获取所选单元格相关属性并存入页面
这里是将属性存入body的自定义属性中,相当于页面全局变量
// 监听当前选中单元格行列号
_g().on("cellselect", function(td) {
//设置单元格被选中时的监听事件
// 索引从1开始
var rowtd = _g().curLGP.getTDRow(td);
var coltd = _g().curLGP.getTDCol(td);
// console.log(rowtd);
// console.log(coltd);
// 给body增加自定义属性
document.body.dataset.myrow = rowtd;
document.body.dataset.mycol = coltd;
document.body.dataset.mytdid = td.id;
})
2、增加一个按钮,增加事件-点击,取出相关属性并向下填充
这里取tbody下的元素搜索,不是全部元素,因为多sheet时页面有多个tbody
(由于帖子里的alert触发了WAF导致不能保存,所以这里注释掉了)
// 这里-1是因为后面columnRow2CellStr函数的参数下标是从0开始
var rowtd = document.body.dataset.myrow-1;
var coltd = document.body.dataset.mycol-1;
var tdid = document.body.dataset.mytdid;
var cellstr = FR.columnRow2CellStr({col:coltd, row:rowtd});
var culvalue = _g().getCellValue(cellstr);
console.log("当前单元格属性||rowtd:", rowtd, "coltd:", coltd, "cellstr:", cellstr, "culvalue:", culvalue, "tdid:", tdid);
var currentTd = document.getElementById(tdid);
if (!currentTd) {
logmsg = "未找到当前所选元素!";
console.log(logmsg);
// alert(logmsg);
return;
}
// 获取【当前 td 最近的父级 tbody】(多表格也不会乱)
var targetTbody = currentTd.closest('tbody');
if (!targetTbody) {
logmsg = "未找到当前所选元素的表格!";
console.log(logmsg);
// alert(logmsg);
return;
}
// 获取这个 tbody 下【所有 tr 的总数】(只在这个范围内循环)
var totalRows = targetTbody.querySelectorAll('tr').length;
if (totalRows <= rowtd + 1) {
logmsg = "当前已是最后一行,无需向下填充!!";
console.log(logmsg);
// alert(logmsg);
return;
}
// ==============================================
// 开始批量填充(只在当前 tbody 内部、总行数内循环)
// ==============================================
var fillCount = 0;
var startRow = rowtd + 1; // 从下一行开始
// 循环:从下一行 到 tbody 最后一行
for (var i = startRow; i < totalRows; i++) {
// 生成单元格编号(A2、A3...)
var cellCode = FR.columnRow2CellStr({
col: coltd,
row: i
});
// 查找:当前 tbody 下,以 编号- 开头的 td
var td = targetTbody.querySelector('td[id^="' + cellCode + '-"]');
if (!td) continue; // 找不到就跳过
// 填充值(用你指定的函数)
_g().setCellValue(cellCode, culvalue);
fillCount++;
}
// alert("批量填充完成!\n当前表格共填充:" + fillCount + " 个单元格");
效果不错
合并单元格也ok
为什么发个帖子要这样限制,一会儿触发WAF不能提交,一会儿说有不良内容无法保存,真是大大降低帆软社区发帖的积极性……
|