1

我的应用程序的要求之一是能够在不使用鼠标的情况下完全导航工作表。似乎由于某种原因,excel keybind Alt+Down在 SpreadJS 中不起作用。

我已经实现了一种解决方法,它基本上是在绑定到Alt+的单元格上激活工作表编辑模式Down,这允许您使用向上和向下键循环浏览列表值,但您无法看到所有值列表(列表不会“下拉”)。

是否有使用SpreadJS函数实现此功能的好方法,或者是我唯一的选择来做“hacky”事情,例如在相对于单元格的某些x,y坐标中强制点击事件,以试图捕捉下拉图标?

4

1 回答 1

2

您可以创建自定义命令,将其添加到 Spread 的 commandManager。

var commandManager = spread.commandManager()
        // register command
        commandManager.register('showList', {
                canUndo: false,
                execute: function(workbook) {
                    var sheet = workbook.getActiveSheet();
                    var r = sheet.getActiveRowIndex();
                    var c = sheet.getActiveColumnIndex();
                    var validator = sheet.getCell(r, c).validator();
                    if (validator) {
                        // if cell has data validator, show the list.
                        workbook.getHost().getElementsByTagName('input')[0].click();   
                    }                     
                }
            }, 
        40, false, false, true, false);

完整的完整代码:

var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
        var sheet = spread.getActiveSheet();
        var dv1 = new GC.Spread.Sheets.DataValidation.createListValidator('Fruit,Vegetable,Food');
        dv1.inputTitle('Please choose a category:');
        dv1.inputMessage('Fruit, Vegetable, Food');
        sheet.setDataValidator(0, 1, dv1);
        sheet.setDataValidator(1, 1, dv1);

        var commandManager = spread.commandManager()
        // register command
        commandManager.register('showList', {
                canUndo: false,
                execute: function(workbook) {
                    var sheet = workbook.getActiveSheet();
                    var r = sheet.getActiveRowIndex();
                    var c = sheet.getActiveColumnIndex();
                    var validator = sheet.getCell(r, c).validator();
                    if (validator) {
                        // if cell has data validator, show the list.
                        workbook.getHost().getElementsByTagName('input')[0].click();   
                    }                     
                }
            }, 
        40, false, false, true, false);

导航到单元格 B1 或 B2,然后按 Alt+Down。

于 2019-05-03T14:13:16.507 回答