找回密码
 立即注册

QQ登录

只需一步,快速开始

HJ-LY

注册会员

7

主题

19

帖子

66

积分

注册会员

积分
66
最新发帖
HJ-LY
注册会员   /  发表于:2023-9-26 10:42  /   查看:1701  /  回复:1
10金币
本帖最后由 HJ-LY 于 2023-9-26 11:14 编辑

initWorkbook(spread) {
······
spread.bind(spreadNS.Events.ValueChanged, function (event, data) {
    let row = data.row,
        col = data.col;
    if (row === undefined || col === undefined) {
        return;
    }
    if (sheet.hasPendingChanges(row, col)) {
        let dirtyDataArray = sheet.getDirtyCells(row, col);
        if (dirtyDataArray.length > 0) {
          sheet.getCell(dirtyDataArray[0].row, dirtyDataArray[0].col).backColor("Yellow");
          console.log("Cell (", dirtyDataArray[0].row, ",", dirtyDataArray[0].col, ") changed from ", dirtyDataArray[0].oldValue, " to ", dirtyDataArray[0].newValue);
        }
    }
});
this.sheetRepaint = sheet;
······
}



clear() {
        ······
        this.sheetRepaint.getRange(-1,3,-1,6).backColor("");   //清除没有效果
        ······
}

最佳答案

查看完整内容

您好,这是因为样式存在优先级的概念(单元格 > 行 > 列),您在事件中设置的样式是在单元格的级别上的,而您在clear函数中调用的设置样式的优先级为列,低优先级的样式无法影响高优先级的样式,因此无法清除。 要解决这个问题很简单,将getRange(-1,3,-1,6)改为=》getRange(0, 3, sheet.getRowCount(), 6)即可。 另外,如果要去除背景色,建议您使用undefined,而不是空字符串。

1 个回复

倒序浏览
最佳答案
最佳答案
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-9-26 10:42:18
来自 2#
您好,这是因为样式存在优先级的概念(单元格 > 行 > 列),您在事件中设置的样式是在单元格的级别上的,而您在clear函数中调用的设置样式的优先级为列,低优先级的样式无法影响高优先级的样式,因此无法清除。

要解决这个问题很简单,将getRange(-1,3,-1,6)改为=》getRange(0, 3, sheet.getRowCount(), 6)即可。

另外,如果要去除背景色,建议您使用undefined,而不是空字符串。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部