Extjs 如何防止右键单击时取消选择行

Extjs 如何防止右键单击时取消选择行,extjs,extjs4.1,Extjs,Extjs4.1,我有一个带有上下文菜单的网格。我知道如何防止右键单击时选择行。我就是这样做的: var allowSelection=true; Ext.getCmp('grid').on('beforeitemmousedown', function(grid, record, item, index, event, eOpts) { if (event.button==0) allowSelection=true ; else allowSelection=false; }); Ext.getCmp('g

我有一个带有上下文菜单的网格。我知道如何防止右键单击时选择行。我就是这样做的:

var allowSelection=true;
Ext.getCmp('grid').on('beforeitemmousedown', function(grid, record, item, index, event, eOpts) { 
if (event.button==0) allowSelection=true ;
else allowSelection=false;
});
Ext.getCmp('grid').on('beforeselect', function(grid, record, index, eOpts) { 
 return allowSelection;
});
但我现在需要的是防止行取消选择。事实上,即使当前代码阻止行选择,它也不会阻止行取消选择

编辑

我的右键单击事件会导致弹出关联菜单。代码中实现这一点的部分就是这一部分

listeners:{
    itemcontextmenu:function(view,record,item,index,e){
      e.stopEvent();
      gridMenu.showAt(e.getXY());
    },
    containercontextmenu:function(view, e){
      e.stopEvent();
      gridMenu.showAt(e.getXY());
    }
...
此代码嵌套在网格的viewconfig中。所以,我只是不想在弹出关联菜单时触发行取消选择

编辑

嗯,我自己做的。刚刚添加的
返回false

if (event.button==0) allowSelection=true ;
else {
  allowSelection=false;
  return false;
}
这很有效

if (event.button==0) allowSelection=true ;
else {
  allowSelection=false;
  return false;
}

这是通过使用布尔变量作为标志和网格上的一些操作侦听器来实现的。请确保在默认情况下将标志设置为true,否则最初将无法选择任何内容


allowDeselect:true,
您应该给出自己的答案作为真实答案,而不是编辑答案。您提供的答案有效,并对按钮进行了额外检查您的解决方案无效。它使用了4.2.2中的错误事件。此外,如果使用itemcontextmenu事件和item click事件,则无需选中该按钮。。右键和左键单击事件。