你好 关于Spread中的CellChange事件我做了如下实验很是不解:
事件代码如下:
- //当单元格改变的时候
- $("#planFormSpread").data("spread").getActiveSheet().bind(GcSpread.Sheets.Events.CellChanged, function (e, info) {
- if (info.sheetArea === GcSpread.Sheets.SheetArea.viewport) {
- /*每次改变单元格事件会出发多次*/
- //第一次:原公式 第二次:原值 第三次:新公式 第四次:新值
- alert("Cell index (" + info.row + "," + info.col + "," + sheet.getValue(info.row, info.col) + "," + sheet.getFormula(info.row, info.col) + ")");
- }
- });
复制代码
第一种:普通无公式单元格,假设单元格默认为:0 修改后为:11
会弹出两次,分别为:<1>: Cell index ("1,1,0,null) <2>:Cell index ("1,1,11,null)
第二种:有公式的单元格,,假设单元格公式为:B1+C1 默认计算结果为:0 修改后为:11
会弹出三次,分别为:<1>: Cell index ("1,1,0,B1+C1) <2>:Cell index ("1,1,0,null) <3> Cell index ("1,1,11,null)
第三种:在第二种情况修改后再次编辑该单元格,修改值为:222
会弹出一次,为:<1>: Cell index ("1,1,0,222)
那么问题就来了,第三种情况已经把公式去掉了,就变成第一种情况的普通单元格,但是第一种情况会弹出两次分别是修改前的值和修改后的值,但是第三种情况以后无论怎么修改只会弹出一次,并且值永远是最新的。
我现在有个需求,无论单元格是否有公式,当修改后我都想把单元格的index、修改前的值,修改后的值,修改前的公式,修改后的公式都记录下来,如何做到?
|
|