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 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化