防止网格面板的键盘多重选择

时间:2013-02-01 04:33:14

标签: extjs extjs4.1 keyboard-events extjs-mvc gridpanel

我想要一个选择网格,起初我没有包含任何选择模型配置,因为它是the default。这适用于鼠标选择,但如果我键SHIFT + END它会选择所有记录(或PAGE UPHOMEEND具有类似的效果。)

然后在不重新加载网格的情况下取消选择所选记录(除非我想要一个配置有allowDeselect: true的网格 - 我不这样做。)

认为ExtJS文档存在关于默认值的问题,然后我明确地选择了SINGLE选择的网格面板,但仍然存在问题。

我检查了他们的一些示例网格here,它们都有相同的问题 - 任何单个选择网格都会阻止鼠标多选,但可以使用shift键和HOME,{{进行多选1}},ENDPAGE 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; } }); 禁用所有键盘导航我只是不想用键盘多选。

1 个答案:

答案 0 :(得分:2)

您可以使用:

selModel: {
    enableKeyNav: false
},

在网格配置中。 但这对我来说是意想不到的选择模型行为......

<强>更新

作为一个非常简单的版本:

selModel: {
    selectRange: function() {
        return false;
    }
},