防止网格面板的键盘多选
Posted
技术标签:
【中文标题】防止网格面板的键盘多选【英文标题】:prevent keyboard multiselect for gridpanels 【发布时间】:2013-02-01 04:33:14 【问题描述】:我想要一个单一的选择网格,起初我没有包含任何选择模型配置,因为那是the default。这适用于鼠标选择,但如果我键入SHIFT + END
,它会选择所有记录(或PAGE UP
、HOME
或END
具有类似的效果)。
如果不重新加载网格,则无法取消选择所选记录(除非我想要一个配置了 allowDeselect: true
的网格 - 我不这样做)。
认为这是关于默认值的 ExtJS 文档的问题,然后我将网格面板配置为 SINGLE
明确选择但仍然存在问题。
我查看了他们的一些示例网格here,它们都有相同的问题 - 任何单个选择网格都会阻止鼠标多选,但可以使用 shift 键和HOME
、END
、@987654331 进行多选@ 或 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
禁用所有键盘导航我只是不想用键盘进行多选。
【问题讨论】:
【参考方案1】:你可以使用:
selModel:
enableKeyNav: false
,
在网格配置中。 但这对我来说是出乎意料的选择模型行为......
更新
作为一个非常简单的版本:
selModel:
selectRange: function()
return false;
,
【讨论】:
我应该在这个问题上更清楚。我确实希望能够使用键盘进行导航(只是不能使用键盘进行多选)以上是关于防止网格面板的键盘多选的主要内容,如果未能解决你的问题,请参考以下文章