我想要一个单一的选择网格,起初我没有包括任何选择模型配置,因为那是 the default .这适用于鼠标选择,但如果我键入 SHIFT + END
,它会选择所有记录(或 PAGE UP
、HOME
或 END
有类似的效果)。
然后,如果不重新加载网格,则无法取消选择所选记录(除非我想要一个配置有 allowDeselect: true
的网格 - 我不想要)。
认为这是 ExtJS 文档的默认问题,然后我使用 SINGLE
显式选择配置了 gridpanel,但问题仍然存在。
我查看了他们的一些示例网格 here , 他们都有同样的问题 - 任何单选网格都会阻止鼠标多选,但可以使用 shift 键和 HOME
, END
, PAGE UP< 进行多选
或 PAGE DOWN
。然后不可能取消选择记录。
似乎是框架中的一个错误,我会提交一份报告,但由于网格是最常用的组件之一,我认为有人对此有解决方法。
无奈之下,我也尝试在全局范围内收听 keypress
并停止事件,但这甚至无法做到。例如,这将记录到控制台,但事件仍然运行:
Ext.getDoc().on('keypress', function(event, target) {
var key = event.getKey();
// do not allow multiple grid selection
if (event.shiftKey && (
key == event.PAGE_UP ||
key == event.PAGE_DOWN ||
key == event.HOME ||
key == event.END)) {
console.log('unsuccessfully trying to stop the event!');
event.stopEvent();
event.stopPropagation();
event.shiftKey = false;
return false;
}
});
编辑:
我不想使用 enableKeyNav: false
禁用所有键盘导航,我只是不想使用键盘进行多选。
最佳答案
您可以使用:
selModel: {
enableKeyNav: false
},
在网格配置中。 但这对我来说是意想不到的选择模型行为......
更新
作为一个非常简单的版本:
selModel: {
selectRange: function() {
return false;
}
},
关于extjs - 防止网格面板的键盘多选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14639779/