extjs的事件执行流程是怎样的?有一个GridPanel控件绑定了contextmenu 和 cellcontextmenu 事件,每次执行cellcontextmenu 事件的时候都会先执行contextmenu ,能否改变它的执行顺序?

解决方案 »

  1.   


    var firstGrid = new Ext.grid.GridPanel(
    {
    region : 'center',
    autoScroll : true,
    collapsible : true, // 允许伸缩
    margins : '0 5 5 0',
    ddGroup : 'ddGroup',
    store : firstGridStore,
    columns : cols,
    enableDragDrop : true,
    emableDrop : true,
    stripeRows : true,
    keys : gridkeys,
    tbar : toolbar,
    autoExpandColumn : 'fileName'
    });
    firstGrid.on('contextmenu', tableMenu);
    firstGrid.on('cellcontextmenu', cellMenu);function cellMenu(grid, rowindex, cellindex, e)
    {
    var rd = firstGridStore.getAt(rowindex);
    var nc = new NodeConstans();
    var tempNode = treePanel.getSelectionModel().getSelectedNode();
    var rootType = nc.getRootNodeType(tempNode);
    if (firstGrid.colModel.getDataIndex(cellindex) == 'fileName')
    {
    var id = e.getTarget().id;
    e.preventDefault();// 阻止浏览器默认右键效果
    grid.selModel.selectRow(rowindex, true);
    if (rd.get('type') == type_folder)
    { if (rootType == nc.NODE_SHARE_ROOT || rootType == nc.NODE_SHARE_USER_ROOT)
    {
    shareCFCM.showAt(e.getXY());
    } else
    {
    cellForderCM.showAt(e.getXY());
    }
    } else
    {
    if (rootType == nc.NODE_SHARE_ROOT || rootType == nc.NODE_SHARE_USER_ROOT)
    {
    shareCFiCM.showAt(e.getXY());
    } else
    {
    if(rootType == nc.NODE_GROUP_ROOT)
    groupCellFileCM.showAt(e.getXY());
    else
    {
    if(rd.get('property')==0)
    cellFileCMnoShare.showAt(e.getXY());
    else
    cellFileCM.showAt(e.getXY());
    }
    }
    }
    }
    }function tableMenu(e)
    {
    e.preventDefault();// 阻止浏览器默认右键效果
    var tempNode = treePanel.getSelectionModel().getSelectedNode();
    var nc = new NodeConstans();
    var rootType = nc.getRootNodeType(tempNode);
    if (tempNode.id == -11 || rootType == nc.NODE_SHARE_ROOT || rootType == nc.NODE_SHARE_USER_ROOT)
    {
    shareContextmenu.showAt(e.getXY());
    } else
    {
    contextmenu.showAt(e.getXY());// 在右键点击的地方显示菜单rightClickMenu
    }
    }