删除上下文菜单/右键单击Ext JS网格

问题描述

| 我在Ext Js中有一个带有选择的表格网格。CheckboxModel 我可以在网格中选择多个项目,但似乎右键单击也可以选择项目 问题是有什么方法可以删除右键单击,从而不选择项目? 提前致谢, 鲍勃     

解决方法

为了防止使用严密的按钮进行选择,您可以使用此代码(对于Ext JS 4)...
var allowSelection=true;
...
grid.on(\'beforeitemmousedown\',function(grid,record,item,index,event,eOpts) { 
    if (event.button==0) allowStreetSelection=true; else allowSelection=false; 
});

grid.on(\'beforeselect\',eOpts) { 
    return allowSelection; 
});
    ,要停止上下文菜单,您可以捕获
rowcontextmenu
事件并将其停止。
grid.on(\'rowcontextmenu\',e) { e.stopEvent() });
这也可以解决您的行选择问题,但右键单击不会为我选择行。您正在使用哪个版本的ExtJS,以及在哪些浏览器上看到此问题?在ExtJS 3.3,Firefox 4和IE 8-9上,我无法重现它。 编辑:对于Ext 4,containercontextmenu看起来是要捕获的事件。从该处理程序返回false将阻止上下文菜单出现。我对Ext 4没有太多经验,所以让我知道它是否对您有用。     ,这对我来说就像是一种魅力(EXTJS 4.1.2):
grid.on(\'beforeitemmousedown\',eOpts) {
  return (event.button == 0);
});
    ,使用ExtJS4时,我们也遇到了同样的问题,我们目前的解决方案是修改extJS中的原始代码。 找:
} else if (me.isSelected(record) && !e.shiftKey 
        && !e.ctrlKey && me.selected.getCount() > 1) 
{
    me.doSelect(record,keepExisting,false);
您可以在
ext-all.js
src/selection/Model.js
中找到它们 并将其更改为:
} else if (me.isSelected(record) && !e.shiftKey && !e.ctrlKey && me.selected.getCount() > 1) {
    if (e.button != 0)
        keepExisting = true;
    else
        keepExisting = false;
    me.doSelect(record,false);
该代码将阻止清除当前的项目选择,除非您使用鼠标按钮0(向左按钮)单击该项目。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...