幽游 发表于 2024-12-4 17:05:33

如何跳过只读单元格


回车绑定了光标横向移动,
spread.commandManager().setShortcutKey("moveToNextCell", GC.Spread.Commands.Key.enter, false, false, false, false);

但是如何能跳过只读的单元格,光标只落得可编辑的单元格上

Wilson.Zhang 发表于 2024-12-4 17:05:34

本帖最后由 Wilson.Zhang 于 2024-12-5 09:02 编辑

在您找到的demo中,使用了Worksheet:setActiveCell()跳转至下一个非只读单元格。如果非只读单元格不在视窗内,可以通过Worksheet:showCell()将单元格移动到视窗中。只需将相关代码接到跳转成功处即可。

或者也可以通过Worksheet:showRow()将只读单元格所在行整体移动到视窗内。

可以参考官网API文档了解详情:
Worksheet:showCell()--https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Sheets.Worksheet#showcell
Worksheet:showRow()--https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Sheets.Worksheet#showrow

Joestar.Xu 发表于 2024-12-4 17:31:29



您好,不勾选这个选项即可。

参考链接:https://demo.grapecity.com.cn/spreadjs/help/api/interfaces/GC.Spread.Sheets.IProtectionOptions#allowselectlockedcells

Wilson.Zhang 发表于 2024-12-4 17:36:22

本帖最后由 Wilson.Zhang 于 2024-12-4 17:41 编辑

您好!楼上版主的方案可行,但是如果您的业务场景中用到了表单保护或者同时存在有只读单元格和可写单元格,那您需要自定义一个命令。

在自定义命令中判断下一个单元格的锁定状态是否为true,如果为true,即为只读单元格,再移动至下一个单元判断,遍历直至锁定状态为false的单元格,再调用SpreadJS内置的moveToNextCells命令将光标移至该单元格即可。同时,为自定义的命令绑定快捷键。

可以通过sheet.getCell(row, col).locked()查询单元格是否锁定。

幽游 发表于 2024-12-4 17:49:32

版主,主要是我不知道怎么通过代码来实现
demo.grapecity.com.cn/SpreadJS/cdn/extendedExample/#/demos/tabMove
有个例子,可以跳过只读单元格,但是如果显示行列比较多,光标回车到所显示的行列以外的单元格时,如何判断,让表格滚动到光标所在的单元格,代码该如何实现?
页: [1]
查看完整版本: 如何跳过只读单元格