extjs 右键菜单 问题

lovesiyile 2010-04-12 09:40:59

rowcontextmenu:function(grid,rowIndex,e){//右键菜单
e.preventDefault();document.title=(rowIndex) //这里的index是每次点击的行
if(menu==null){//为了节省资源,只创建一次
menu=new Ext.menu.Menu({
items:[{
text:msg.add,iconCls:"icon icon_add",
handler:showadd
},{
text:msg.edit,iconCls:"icon icon_edit",
handler:function(){document.title+=","+(rowIndex)//但是这里的index却始终是第一次点击的行,这是怎么回事啊,谁给解释下?
//到底要怎样才能在第二次点击时获取当然右键的行?
showedit(grid.getStore().getAt(rowIndex));
}
},{
text:msg.del,iconCls:"icon icon_del",
handler:function(){
showdel(grid.getStore().getRange(rowIndex,rowIndex))
}
}]
});

};
menu.showAt(e.getPoint())

grid的右键菜单
...全文
153 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
s000rd 2010-04-12
  • 打赏
  • 举报
回复
监听的哪个事件,如果是cellclick这个事件的话,应该是没问题的
xushilin000000000 2010-04-12
  • 打赏
  • 举报
回复
谁让你只创建一次的啥, 你创建的时候顺带把handler也创建了

把handler函数放到e.preventDefault();后面声明……

呵呵,提前说好,我也不知道对不对哈……

把你想得的方法都试一试……

只要愿意想,任何难题都能想到解决办法的……
下面是复选框的且带右键菜单的树代码。 HTML code Ext.BLANK_IMAGE_URL = "../resources/images/default/s.gif"; Ext.QuickTips.init(); Ext.state.Manager.setProvider(new Ext.state.CookieProvider()); Ext.onReady(function(){ /************************** 联系人树形菜单**************************/ var contacterTree = new Ext.tree.TreePanel({ id:"treePanelContact", border:false, lines:false, // 去掉树的线 rootVisible:true, autoScroll:true, animate:true, width:200, height : 468, style:"background-color:#FFFFFF;border-color:#0099FF;", // enableDD: false, // 允许树可以拖拽 containerScroll: true, loader: new Ext.tree.TreeLoader({ dataUrl:'/treeOperation.do?action=loadTree' }), root:new Ext.tree.AsyncTreeNode({ id : "treeContact", text: '联系人', draggable:false, expanded: true // 展开根节点下的节点 }), listeners:{ click : function(node){ if(node.id == "treeContact"){ // 如果点击的是根节点,则 GridPanel 显示所有的数据 // store.load({params:{flag:'all'}}); } else if(node.isLeaf() == true){ // 如果点击的是枝节点的话,则根据 ID 查询联系人的信息 // store.load({params:{flag:'contacter',contacterId:node.id}}); }else{ // 如果既不是根节点也不是枝节点,那么点击的就是分组节点, // 则 GridPanel 显示对应分组号的联系人信息 // store.load({params:{flag:'group',groupId:node.id}}); } } } }); // 添加 树的右键菜单 contacterTree.on('contextmenu', menuShow); function menuShow ( node ) { treeRightMenu.show(node.ui.getAnchor()); node.select();//让右击是选中当前节点 }; var treeRightMenu = new Ext.menu.Menu({ id: 'treeMenuContext', items: [ { text: '搜索联系人', icon:"../images/shared/icons/fam/search.gif", handler:function() { Search_Contacter("搜索联系人"); // 具体可以根据自己的需求来写。。 } }, { text: '添加联系人', icon:"../images/shared/icons/fam/add.gif", handler:function() { AddContacter("新增联系人"); // 具体可以根据自己的需求来写。。 } },{ text: '添加分组', icon:"../images/shared/icons/fam/add.gif", handler:function() { AddContacterGroup("新增分组"); // 具体可以根据自己的需求来写。。 } },{ text: "删除", icon: "../images/shared/icons/fam/delete.gif", handler:function() { treeDelContacter(); // 具体可以根据自己的需求来写。。 } } /* ,{ text:"修改", icon: "../images/shared/icons/fam/cog_edit.png", handler:function() { treeEditContacter(); } } */ ] }); // 当选中父节点时,让其子节点相应选中 contacterTree.on('checkchange', function(node, checked) { node.expand(); node.attributes.checked = checked; node.eachChild(function(child) { child.ui.toggleCheck(checked); child.attributes.checked = checked; child.fireEvent('checkchange', child, checked); }); }, contacterTree); // 删除事件 function treeDelContacter(){ // 当右键点击删除时,先判断右键点击的是分组节点还是枝节点 // 通过选择模型来得到右键点击的节点 var selectModel = contacterTree.getSelectionModel(); var node = selectModel.getSelectedNode(); if(node.id == "treeContact"){ // 右键根节点 Ext.MessageBox.alert("提示","根节点是不允许删除的!"); }else if(node.isLeaf() == true){ // 右键 联系人节点 var flag = confirm("您确定要删除名为 :“"+node.text+" ”的联系人信息吗?"); if(flag == true){ location.href="/contacterManage.do?action=delContacters&strContacterId="+node.id+";"; //alert("成功删除名为 :"+node.id+" 的联系人信息!"); } }else{ // 右键 分组节点 var flag = confirm("您确定要删除名为 :“"+node.text+" ”的分组信息吗?"); if(flag == true){ //alert("成功删除名为 :"+node.id+" 的分组信息!"); location.href="/contacterManage.do?action=delContacterGroup&strGroupId="+node.id+";"; } } } // 修改事件 /* function treeEditContacter(){ // 当右键点击删除时,先判断右键点击的是分组节点还是枝节点 // 通过选择模型来得到右键点击的节点 var selectModel = contacterTree.getSelectionModel(); var node = selectModel.getSelectedNode(); if(node.id == "treeContact"){ // 右键根节点 Ext.MessageBox.alert("提示","根节点是不允许修改的!"); }else if(node.isLeaf() == true){ // 右键 联系人节点 }else{ // 右键 分组节点 } } */ });

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧