防止网格面板的键盘多选

Posted

技术标签:

【中文标题】防止网格面板的键盘多选【英文标题】:prevent keyboard multiselect for gridpanels 【发布时间】:2013-02-01 04:33:14 【问题描述】:

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

如果不重新加载网格,则无法取消选择所选记录(除非我想要一个配置了 allowDeselect: true 的网格 - 我不这样做)。

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

我查看了他们的一些示例网格here,它们都有相同的问题 - 任何单个选择网格都会阻止鼠标多选,但可以使用 shift 键和HOMEEND、@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;
    
,

【讨论】:

我应该在这个问题上更清楚。我确实希望能够使用键盘进行导航(只是不能使用键盘进行多选)

以上是关于防止网格面板的键盘多选的主要内容,如果未能解决你的问题,请参考以下文章

跳过 WPF 中面板或网格中所有控件的 KeyboardNavigation

单击按钮时如何防止下拉列表在更新面板中回发或更新

如何在表单面板中添加网格面板?

在树形面板中双击应该在网格面板中添加 Extjs

禁用带有复选框的网格面板

如何将面板添加到 rowBody 中的 extjs 网格面板