浏览 1848 次
锁定老帖子 主题:ext grid的触发机制有问题
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-05-20
Ext的grid事件全都绑定在mainbody,而事件触发的过程是根据事件当前element向上寻找到当前的行号,就是这个找的过程有问题,在chieldGrid里面触发事件找到的行号是chieldGrid的,他也给传回parent。 因为事件绑定的问题,View里面堆了大量寻找element的函数,乱七八糟,真郁闷 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-05-20
如果你想让事件在你执行的监听函数上停止 你只需要 return false 就可以了 这个设计不是很合理吗!?
|
|
返回顶楼 | |
发表时间:2008-05-20
是的,
如代码: if(this.fireEvent('eventName', argument1,argument2, ...) === false){ //不工作.. } |
|
返回顶楼 | |
发表时间:2008-05-21
可能我没说明白
我要实现的仅仅是subGrid,我自己的函数只是加上左边那个展开按钮,还有就是view.enableRowBody = true;然后把另外一个grid绑定进去,这样做了之后,两个grid就冲突了,不是Ext的设计缺陷? 不太明白楼上说的方法,我不是要屏蔽事件,而是想让事件发生在该发生的地方。比如鼠标经过和点击事件。 请看我传的那张图片,按正常的情况,事件触发是这样的:subGrid里面的google先触发,然后parentGrid的baidu被触发,事实上也确实是这样的触发过程,parent的触发位置确实是baidu那个位置,但是Ext获取元素的方法仅仅是根据当前element向上找10次,找到class=x-grid3-body那个元素,而没有考虑多重grid重复的问题,所以导致返回的rowid错误。 我认为这是个很蹩脚的设计,为了简化触发机制,简单的将触发器放在mainbody上,结果造成内部元素触发点击都要用这个方法寻找触发的row,搞了一大堆查询函数,结果还是有问题。 我现在没找到好的解决办法,简单的方法是重写grid上所有的触发函数,复杂的方法是重写整个View类。 |
|
返回顶楼 | |
发表时间:2008-05-23
引用 请看我传的那张图片,按正常的情况,事件触发是这样的:subGrid里面的google先触发,然后parentGrid的baidu被触发,事实上也确实是这样的触发过程,parent的触发位置确实是baidu那个位置,但是Ext获取元素的方法仅仅是根据当前element向上找10次,找到 class=x-grid3-body那个元素,而没有考虑多重grid重复的问题,所以导致返回的rowid错误。
这个是需要你再子grid中显式触发的,如果没有这个机制的话,效率会很差吧,而且这里既然你都写了这几个grid了,没必要偷懒完全以来ext或者说浏览器的事件触发机制啊,你的这种想法比较罕见(我觉得)。 |
|
返回顶楼 | |