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

时间:2011-05-25 19:34:10

标签: extjs

我在Ext Js中有一个带有selection.CheckboxModel的表格 我可以在网格中多选项目,但似乎也可以右键单击选择项目

问题是有没有办法删除右键点击,因此它不会选择项目?

提前致谢, 鲍勃

4 个答案:

答案 0 :(得分:2)

要防止使用右键选择,您可以使用此代码(使用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', function(grid, record, index, eOpts) { 
    return allowSelection; 
});

答案 1 :(得分:0)

要停止上下文菜单,您可以捕获rowcontextmenu事件并将其停止。

grid.on('rowcontextmenu', function(grid,index,e) { e.stopEvent() });

这也可以解决您的行选择问题,但右键单击不会为我选择行。您使用的是什么版本的ExtJS以及您在哪些浏览器上看到此问题?在ExtJS 3.3和Firefox 4以及IE 8-9上,我无法重现它。

编辑:对于Ext 4,containercontextmenu看起来是要捕获的事件。从该处理程序返回false应该停止显示上下文菜单。我对Ext 4没有多少经验,所以让我知道它是否适合你。

答案 2 :(得分:0)

我们在使用ExtJS4时也遇到了同样的问题,我们现在的解决方案是修改extJS中的原始代码。

查找

} else if (me.isSelected(record) && !e.shiftKey 
        && !e.ctrlKey && me.selected.getCount() > 1) 
{
    me.doSelect(record, keepExisting, false);

您可以在ext-all.jssrc/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, keepExisting, false);

此代码将阻止清除当前项目选择,除非您使用鼠标按钮0(左键)单击该项目。

答案 3 :(得分:0)

这对我来说很有魅力(EXTJS 4.1.2):

grid.on('beforeitemmousedown', function(grid, record, item, index, event, eOpts) {
  return (event.button == 0);
});