公式栏文本未随之更改的原因是:
选择单元格,公示栏显示单元格value,
这一过程内部逻辑包含了几个步骤:
1、获取选择单元格的值
2、公式栏栏拿到value后重新赋值,修改显示值
3、取消单元格激活状态
所以通过API改变选择单元格时,也要通过代码实现公式栏value的更新。
主要代码如下:
- let command1 = {
- canUndo: false,
- execute: function(context, options, isUndo) {
- let Commands = GC.Spread.Sheets.Commands
- if (isUndo) {
- Commands.undoTransaction(context, options);
- return true;
- } else {
- Commands.startTransaction(context, options);
- let sheet = context.getActiveSheet()
- let rowIndex = sheet.getActiveRowIndex()
- let columnIndex = sheet.getActiveColumnIndex()
- let childNodes = sheet.getPrecedents(rowIndex, columnIndex)
- if (childNodes.length > 0) {
- sheet.clearSelection();
- for(let i=0; i<childNodes.length; i++) {
- let targetNode = childNodes[i];
- let targetSheet = context.getSheetFromName(targetNode.sheetName)
- let targetRowIndex = targetNode.row
- let targetColumnIndex = targetNode.col
- context.setActiveSheet(targetNode.sheetName)
- targetSheet.addSelection(targetRowIndex, targetColumnIndex, 1, 1)
- if(i==0) {
- targetSheet.setActiveCell(targetRowIndex, targetColumnIndex);
- // 获取选择单元格的值,赋值到公式栏
- fbx.text("" + targetSheet.getValue(targetRowIndex, targetColumnIndex));
- fbx.refresh(true);
- targetSheet.endEdit(true);
- }
- }
- }
- Commands.endTransaction(context, options)
- return true
- }
-
- }
- }
- spread.commandManager().register("searchDependent", command1)
- spread.commandManager().setShortcutKey("searchDependent", 219, true, false, false, false);
复制代码
具体请参考附件的demo(已添加公式栏)。
注:参考Excel快捷键形式对您提供的代码做了修改,
测试步骤:
选择B4单元格,按下ctrl+[ ,观察公式栏值变化
|
|