cmh0127 2010-12-07 16:24
浏览 288
已采纳

Ext.tree.TreePanel 问题

大家好。。我有个Tree问题请教一下。不知道 为什么老是报undefined
,那个this.addTreeWin.show() 也是报 this.addTreeWin is undefined,怎么解决呢?

[img]http://dl.iteye.com/upload/attachment/362341/21e5c4d8-5496-3ae9-bd09-25fc65f3e53f.jpg[/img]

代码如下:
MenuTree=Ext.extend(Ext.tree.TreePanel,{
tree_root:null,
tree_menu:null,
addTreeWin:null,
selectNode:null,//当前选择的节点
tabPanel:null,
constructor:function(_tabPanel){
this.tabPanel=_tabPanel;
this.addTreeWin=new addTreeNewWin();
this.addTreeWin.on("addSuccess",function(){
this.tree_root.reload();
this.addTreeWin.hide();
},this);
this.tree_root=new Ext.tree.AsyncTreeNode({
text : '系统配置',
draggable:false,
id:'0'
});
this.tree_menu = new Ext.menu.Menu([
{
text : "添加子树栏目",
iconCls : 'addIcon',// 右键名称前的小图片
handler : function() {
var parentCode = this.selectNode.id;
var parentName = this.selectNode.text;
alert(parentCode+"--"+parentName);
var menuParent = new menu({
parentCode : parentCode,
parentName : parentName
});
this.addTreeWin.show();
}
}, {
text : "刷新树栏目",
iconCls : 'refresh',
handler : function() {
/ ar tree = Ext.getCmp('naviTree');
//tree.root.reload();// 树的重新加载
var tree = Ext.getCmp('naviTree');
tree.root.reload();// 树的重新加载
tree.root.expand(false, false);
}
}]
);
MenuTree.superclass.constructor.call(this,{
id : 'naviTree',
useArrows:true,
animate:true,
autoScroll:true,
containerScroll: true,//是否支持滚动条
deferHeight:true,
split:false,

rootVisible:true,//是否显示根节点
collapseMode:'mini',//在分割线处出现按钮
collapsible: true,
root:this.tree_root,
rootVisible:false,
border:false,
loader:new Ext.tree.TreeLoader({

dataUrl : '../manager/menu!menuAllListInfo.demo'
}),
listeners:{
"contextmenu":{
fn:this.show_menu,
scope:this
}
}
});
this.addEvents("refreshTree");
},
show_menu : function(_node, _e) {
this.selectNode = _node;

//alert(node.parentNode+"----selectNode--"+this.selectNode.id+"-text-"+this.selectNode.text+"-parentNode.id-"+this.selectNode.parentNode.id+"-parentNode.text-"+this.selectNode.parentNode.text);
if (_node.isLeaf())// 子栏目右键工具栏
{
this.tree_menu.showAt(_e.getXY());
} else if (!_node.isLeaf() && _node.parentNode != null)// 树栏目右键工具栏
{
this.tree_menu.showAt(_e.getXY());
} else if (!_node.isLeaf() && _node.parentNode == null)// 树ROOT栏目工具栏
{
this.tree_menu.showAt(_e.getXY());
}

}
});

  • 写回答

1条回答 默认 最新

  • issppt 2010-12-08 13:11
    关注

    addTreeWin:null,
    selectNode:null

    想通过属性配置这两个对象到treepanel中去需要重新扩展treepanel,直接写在那就想tree自己识别出来不大现实。我在你代码里也没看到扩展treepanel将这两个组件加入新的treepanel组件的方法。所以报undefined比较正常。

    通常的用法是在外面声明这两个组件,然后在tree的动作执行方法中调用这些组件。

    例如:
    var leftClickSeletednode=new Ext.tree.AsyncTreeNode({
    id:'leftclickselectednode'
    });
    然后监听click事件,将监听click时间中的node参数,赋leftClickSeletednode。

    对于window,也类似,在外面生命一个window,然后在需要处理的弹出window的事件中调用它。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 outlook无法配置成功
  • ¥15 Pwm双极模式H桥驱动控制电机
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换