我在Ext Js中有一个带有selection.CheckboxModel的表格 我可以在网格中多选项目,但似乎也可以右键单击选择项目
问题是有没有办法删除右键点击,因此它不会选择项目?
提前致谢, 鲍勃
答案 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.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, keepExisting, false);
此代码将阻止清除当前项目选择,除非您使用鼠标按钮0(左键)单击该项目。
答案 3 :(得分:0)
这对我来说很有魅力(EXTJS 4.1.2):
grid.on('beforeitemmousedown', function(grid, record, item, index, event, eOpts) {
return (event.button == 0);
});