问题描述
|
我在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(向左按钮)单击该项目。