EXT 树节点编辑

//给tree创建一个可修改的容器,即TreeEditor
        var treeEditer = new Ext.tree.TreeEditor(
            Ext.getCmp('tree-menu'),//将tree组建的实例放入
            {
                allowBlank: false,//输入的值不可以为空
                blankText:'名称不允许为空!'
            }
        );

//beforestartedit事件是在编辑前的事件,因此可以通过它来判断那些节点可以编辑那些不可以。
        //    complete为编辑之后的事件,在这里面可以添加很多事件,比如添加一个Ext.Ajax向后台传送修改的值等等。
        treeEditer.on("beforestartedit", treeEditerBeforEdit,this);
        treeEditer.on("complete",treeEditerComplete,this);

function treeEditerBeforEdit(treeEditer){
            var tempNode = treeEditer.editNode;//将要编辑的节点
            /*是否只允许编辑叶子节点*/
            return true;
            /*if(tempNode.isLeaf()){
                return true;
            }else{
                return false;   
            }*/
        }
       

/*
            complete事件带有三个参数分别为
            1.Editor this 当前编辑组建即TreeEditor
            2.Mixed value 编辑之后的值
            3.Mixed startValue 编辑之前的值
        */
        function treeEditerComplete(treeEditer,newValue, oldValue){
            var selectedNode = westPanel.getSelectionModel().getSelectedNode();//得到选中的节点
            var node_id = selectedNode.attributes.id;
            var nodeEdited = treeEditer.editNode;//得到编辑之后节点
            if(newValue==oldValue){
                return false;
            }else{
                //开始向后台传输数据并有edit_node.php进行处理
                Ext.Ajax.request({
                    url: 'tree/modules/edit_node.php',
                    method:'post',
                    params:{new_name:newValue,str_id:node_id},
                    success: function(response, option) {
                        var result = response.responseText;
                        if(result=='ok'){
                            Ext.example.msg('执行成功', oldValue+' 已经更名为 <font color=blue>'+newValue+'</font>');
                            person_ds.reload();//grid表格刷新显示
                        }else{
                            nodeEdited.setText(oldValue);
                            Ext.example.msg('执行失败', '名称更改失败');
                        }
                    },
                    failure: function(response, option) {
                        nodeEdited.setText(oldValue);//如果失败则将改过的节点恢复原状
                        Ext.Msg.alert('编辑出错',"异步通讯失败,请与管理员联系!");
                    }
                });
            }
        }

你可能感兴趣的:(Ajax,PHP,ext)