3

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

然后,如果不重新加载网格,就无法取消选择选定的记录(除非我想要一个配置有的网格allowDeselect: true- 我没有)。

认为这是关于默认值的 ExtJS 文档的问题,然后我使用SINGLEselect 显式配置了网格面板,但仍然存在问题。

我在这里查看了他们的一些示例网格,它们都有相同的问题 - 任何单个选择网格都会阻止鼠标多选,但可以使用 shift 键和HOME、或进行多选。然后不可能取消选择记录。ENDPAGE UPPAGE 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我只是不想用键盘进行多选。

4

1 回答 1

2

您可以使用:

selModel: {
    enableKeyNav: false
},

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

更新

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

selModel: {
    selectRange: function() {
        return false;
    }
},
于 2013-02-01T07:01:05.603 回答