• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
MaWei Blog
路漫漫其修远夸,吾将上下以求所!
博客园    首页    新随笔    联系   管理    订阅  订阅

Extjs 中 TablPanel contextmenu 事件

      最近学了下Extjs,感觉十分痛苦。特加是有些API不全,一个小问题弄半天弄不出来。今天遇到一个TabPanel的右键菜单的问题,本想做一个点右键关闭当前选项卡和其它的菜单,结果在TablePanel listerners一的事件里面写的如下代码。
Code
listeners:{
                    contextmenu:function(t,cur,e){
                        
if(!this.cmenu){
                            
this.cmenu=new Ext.menu.Menu({                                
                                items:[{
                                    id:tab.id
+'-close',
                                    text:
'Close',
                                    handler:function(){                                        
                                        tab.remove(cur);
                                    }
                                },{
                                    text:
'Close Other'
                                },{
                                    text:
'Close All'
                                }]
                            })
                        }
                        e.stopEvent();
                        
this.cmenu.showAt(e.getPoint());
                    }
                }
      结果发现在怎么都不行,每次只能关闭一次,每二次就不行了。最后查了半天,在网上找了很久也没找到。郁闷之及。还是在它的API文档里面发现有类似的。看了它的代码后改造了下
Code
cmenu:false,
                ctxItem:
false,
                listeners:{
                    contextmenu:function(t,cur,e){
                        
if(!this.cmenu){
                            
this.cmenu=new Ext.menu.Menu({                                
                                items:[{
                                    id:tab.id
+'-close',
                                    text:
'Close',
                                    handler:function(){                                        
                                        tab.remove(tab.ctxItem);
                                    }
                                },{
                                    text:
'Close Other'
                                },{
                                    text:
'Close All'
                                }]
                            })
                        }
                        e.stopEvent();
                        tab.ctxItem
=cur;
                        
this.cmenu.showAt(e.getPoint());
                    }
                }

 

这下才行,我发现在TabPanel的contextmenu事件有点小猫腻,每二个参数说的是传的当前的tab结果在colse里面得不到。还是你每下次点击的那个tab,所以要设置一个全局的变量来保存。这里我用的是ctxItem。希望以后谁遇到这个问题能好些。

posted @ 2009-05-22 19:04  Ma Wei  阅读(1759)  评论(1)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3