oneTreePanel =Ext.extend(Ext.tree.TreePanel,{
menu:null,
constructor:function(){
this.menu=new Ext.menu.Menu({
items:[{
text:"添加",
handler:this.onInsertNode,
scope:this
},{
text:"删除",
handler:this.onDeleteNode,
scope:this
},{
text:"修改",
handler:this.onUpdateNode,
scope:this
}]
}),
oneTreePanel.superclass.constructor.call(this,{
renderTo:Ext.getBody(),
width:200,
height:200,
listeners:{
"contextmenu":{
fn:this.onContextmenu,
scope:this
}
}
//导入数据 数据只能是json的()
loader:new Ext.tree.TreeLoader({
dataUrl:'http://localhost/ExtJSTest/server/app/test/29/databasePanel.asp',
//每次下载的时候不刷新页面
clearOnload:false
}),
//定义根节点
root:new Ext.tree.AsyncTreeNode({
text: '载入节点',
id:"0"
})
});
},
onContextmenu:function(_node , _e){
//点击菜单时候就显现出来菜单的值
this.menu["crrentNode"] = _node;
//判断不能删除根结点
if(this.menu["crrentNode"].id=0)
this.menu.items.itemAt(1).setDisabled(true);
else
this.menu.items.itemAt(1).setDisabled(false);
//时间传的参数 _e.getXY获取当前的坐标
this.menu.showAt(_e.getXY);
},
//menu菜单修改事件
onUpdateNode:function(){
//alert(this.menu["crrentNode"].text);
Ext.Msg.prompt("请输入修改后的名称","名称",this.onUpdateNodePrompt,this,false,this.menu[crrentNode].text);
},
//menu菜单修改事件
onUpdateNodePrompt:function(_btn,_text){
if(_btn == "ok")
{
if(this.menu["crrentNode"].text!=_text.trim())
{
this.menu["crrentNode"].setText(_text);
Ext.Ajax.request({url:"",params:{id:this.menu["crrentNode"].id,text:this.menu["crrentNode"].text}});
}
}
},
//menu菜单删除事件
onDeleteNode:function(){
Ext.Msg.confirm("系统提示","您师是否确定删除节点?",this.onDeleteNodeConfirm,this);
},
//menu菜单删除事件
onDeleteNodeConfirm:function(_btn){
var _node= this.menu["crrentNode"];
if(_btn == "yes")
//_node.parentNode.id 获取当前节点
Ext.Ajax.request({url:"",params:{parentId:_node.parentNode.id,id:_node.id}});
_node.remove();
},
//添加树节点事件
onInsertNode:function(){
Ext.Msg.prompt("请输要添加的树节点名称","名称",this.onInsertNodePrompt,this);
},
//添加树节点事件
onInsertNodePrompt:function(_btn,_text){
if(_btn=="ok")
{
var _parent=this.menu["crrentNode"];
//在每次添加之前 false 这 样可以在最后叶子节点上添加
_parent.leaf=false,
//添加个节点
var _node=new Ext.tree.AsyncTreeNode({
text:_text,
leaf:true,
id:Ext.id()
}));
///_parent.id 获取要添加节点的id
Ext.Ajax.request({
url:"",
params:{parentId:_parent.id,id:_node.id,text:_node.text}
});
//这个判断会避免出现客户端添加的数据和数据库添加的数据同时出现
if(_parent.isLoaded()){
_parent.appendChild(_node);
}else{
//展开这个节点
_parent.expand();
}
}
}
});