我的应用程序的要求之一是无需使用鼠标就能完全导航工作表。 似乎由于某些原因,excel键绑定 Alt + Down 在SpreadJS中不起作用。
我已经实现了一种变通方法,该方法基本上是在绑定到 Alt + Down 的单元格上激活工作表编辑模式,这使您可以循环浏览列表值使用向上和向下键,但是您无法从列表中看到所有值(列表不会“下拉”)。
有任何一种使用SpreadJS函数实现此效果的好方法,或者是我做“骇人”的事情的唯一选择,例如在相对于单元格的某些x,y坐标中强制单击事件,以尝试捕获下拉图标?
答案 0 :(得分:1)
您可以创建一个自定义命令,将其添加到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。