Extjs怎么在复选框没有选中的情况下也能执行行选择事件

我做了一个Extjs表格有复选框,想实现的效果是:当只有鼠标放在复选框时点击鼠标才能选复选框,当鼠标在这一行的除了复选框的其他地方点击时,执行一个单击事件。也就是说选复选... 我做了一个Extjs表格有复选框,想实现的效果是:当只有鼠标放在复选框时点击鼠标才能选复选框,当鼠标在这一行的除了复选框的其他地方点击时,执行一个单击事件。也就是说选复选框和单击行事件完全独立,互不干扰,但是现在加了var sm0 = new Ext.grid.CheckboxSelectionModel(); sm0.handleMouseDown = Ext.emptyFn;后能实现的是:当鼠标在复选框时才能选复选框,只有这行的复选框被选择时,单击事件才有效,否则无效。请高手给予指点。ps:我用的是Extjs2.0
1.this.handleMouseDown = Ext.emptyFn;是什么意思?
2.现在情况是我写一个带复选框的表格,然后写个rowclick单击事件,就会出现不管点这一行的任何地方(包括复选框位置)就会选中复选框并且触发rowclick;如果我在var sm = new Ext.grid.CheckboxSelectionModel();后面加一句this.handleMouseDown = Ext.emptyFn;的情况是:在没有选中复选框时,点击这一行复选框右侧其他的地方没有任何效果;如果点击复选框位置就会选中复选框并且触发rowclick事件。这两种情况都不是我想要的,我要的是点击复选框位置时只选中复选框,点击除复选框以外的其他地方触发rowclick事件,互不干扰。
3.你说的继承CheckboxSelectionModel,然后往里面加上那句话,或者那个偷懒的方法。和我现在写的方式有什么区别吗?
展开
 我来答
luffy1201
推荐于2016-02-20 · TA获得超过1523个赞
知道小有建树答主
回答量:401
采纳率:0%
帮助的人:578万
展开全部

如果是3的话,有个:

new Ext.grid.CheckboxSelectionModel({

    checkOnly:true//只能通过点击复选框列的复选框才能选中行

   });

 

2的话,我看了下api没有该属性,于是我又下载了源码和extjs3的比对了下,发现3中有这么一段话2里面是没有的:

if(this.checkOnly){

            this.handleMouseDown = Ext.emptyFn;
//handleMouseDown这个函数,在RowSelectionModel里,而且2和3的实现是相同的。
        }

 

 

于是你可以自己写个组件,继承一下CheckboxSelectionModel,在里面把 this.handleMouseDown = Ext.emptyFn;这个加上。(具体写法可以模仿3的CheckboxSelectionModel)

 

或者一个偷懒方法,就是在你new的那个CheckboxSelectionModel里重写onMouseDown这个函数,在这个函数里,加上 this.handleMouseDown = Ext.emptyFn;这个。(重写的话需要先拷贝源码中对应的onMouseDown方法)

大概这样:

var sm=new Ext.grid.CheckboxSelectionModel({

         onMouseDown : function(e, t){

          //拷贝源码+你自己的处理

       }

});

 

你去下extjs2和extjs3的源码吧~~~自己试着搞一下~~~

追问
讲的很好,辛苦你还去下载源码给我解答,但我是个新手,对js不是很了解。现在我就想知道怎么解决问题,我有几个疑问:(由于字数比较多,只能放在问题补充里了,麻烦再看一下,谢谢啦!)
追答
var sm = new Ext.grid.CheckboxSelectionModel({

       handleMouseDown: Ext.emptyFn       

     });

这样~就是3里的checkOnly:true这个配置~~~

 

所实现的是,点击右侧,不会勾选复选框,但点击复选框一定会选择右侧~~~因为这个组件是selectionmodel,作用就是勾选grid的一行记录的~~~而且这个checkbox就是在行内的,点击就是会触发rowclick事件的~~~

 

如果你非要互不干扰,那你就得自己重写选择器和grid还有view了~~~ 

 

你不行换个事件吧用rowdblclick~~~双击某一行~~~

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式