EXT 做的导航树 可以调整节点顺序

jsp页面

<input type="button"
                                            value='<s:text name="msg.portalMS.category.ordetcategory"/>' id="button"
                                            οnclick="javascript:NavTree.show();layerMaskShow();" title="<s:text name="msg.portalMS.category.ordetcategory"/>"/>
                                            <s:hidden name="cloneCategory.terminalType" id="category_terminalType" value="1"></s:hidden>
                                       

exttree.js

var basePath = "http://localhost:8080/portalMS";
if(typeof(glbRootPath) != "undefined"){
    basePath = glbRootPath;
}
// 扩展窗体
FormEditWin = function(){
    var curFormWin;
    return {
        width : 600,
        height : 400,
        showAddDirWin : function(parentNode) {
            // 显示添加子目录窗口
            var number = parentNode.indexOf(parentNode.lastChild) + 1;
            var editpage = 'resource/jsonData.action';
            var window = this.createWin("windirnew",$CON.AIMDIRECTORY_NEWNODE, editpage, function() {
                parentNode.reload();
            });
            window.show();
        },
        showAddLeafWin : function(parentNode) {
            // 显示添加子叶子节点窗口
            var number = parentNode.indexOf(parentNode.lastChild) + 1;
            var editpage = basePath
                    + "/treeAction!modifyNode.action?extTree.parentId="
                    + parentNode.id + "&extTree.leaf=1&extTree.number=" + number;
            var window = this.createWin("winleafnew", $CON.LEAF_NEWNODE, editpage, function() {
                parentNode.reload();
            });
            window.show();
        },
        showEditDirWin : function(node) {
            // 显示目录编辑窗口
            var editpage = basePath
                    + "/treeAction!modifyNode.action?extTree.id=" + node.id;
            var window = this.createWin("win" + node.id, node.text, editpage, function() {
                var nodeparent = node.parentNode;
                var tree = node.getOwnerTree();
                nodeparent.on("expand", function(pnode) {
                    tree.getNodeById(node.id).select();
                }, this, {
                    single : true
                });
                node.parentNode.reload();
            });
            window.show();
        },
        showEditLeafWin : function(node) {
            // 显示叶子节点编辑窗口
            var editpage = basePath
                    + "/treeAction!modifyNode.action?extTree.id=" + node.id;
            var window = this.createWin("win" + node.id, node.text, editpage, function() {
                var nodeparent = node.parentNode;
                var tree = node.getOwnerTree();
                nodeparent.on("expand", function(pnode) {
                    tree.getNodeById(node.id).select();
                }, this, {
                    single : true
                });
                node.parentNode.reload();
            });
            window.show();
        },
        createWin : function(winId, winTitle, iframePage, closeFun) {
            // 供各类型窗口创建时调用
            var win = Ext.getCmp(winId);
            if (!win) {
                win = new Ext.Window({
                    id : winId,
                    title : $CON.MENU_EDIT + winTitle,
                    width : this.width,
                    height : this.height,
                    maximizable : true,
                    modal : true,
                    html : "<iframe width='100%' height='100%' frameborder='0' src='"
                            + iframePage + "'></iframe>"
                });
                this.reloadNavNode = closeFun;
            }
            curFormWin = win;
            return win;
        },
        reloadNavNode : function() {
        },
        close : function() {
            if(curFormWin){
                curFormWin.close();
            }
        }
    }
}();

// 导航树
NavTree = function(){
    var nav;
    var formWindow;
    var navEditor;
    var leafMenu;
    var dirMenu;
    var loader;
    var root;
    var removeFlag = false;
    var titleChangeFlag = false;
    var nodeSelected;
    var mgr;
    var title;
    var cateType;
    var terminalType;
    return {
        init : function(){
            if(!mgr){
                Ext.Msg.alert($CON.WARM_TIP,$CON.CHECK_CONFIG+"NavTree.setMgr()"+CHECK_CONFIG_ONE+"mgr");
                return;
            }
            if(!loader){
                if(!Ext.get("cate_type"))
                {
                    return;
                }
                if(!Ext.get("category_terminalType"))
                {
                    return;
                }
                var siteId="";
                if(Ext.get("siteId"))
                {
                    siteId=Ext.get("siteId").dom.value;
                }
                terminalType = Ext.get("category_terminalType").dom.value;
                cateType =Ext.get("cate_type").dom.value;
                loader = new Ext.tree.TreeLoader({
                    url : '/portalMS/resource/jsonData.action?cateType='+cateType+'&terminalType='+terminalType+'&site.siteID='+siteId
                });
                loader.on('beforeload', function(treeloader, node) {
                    treeloader.baseParams = {
                        id : node.id        
                    };
                }, this);
            }
            if(!root){
                    if(Ext.get("category_firstNodeName")){
                        title=Ext.get("category_firstNodeName").dom.value;
                    }else{
                        title="";
                    }
               root = new Ext.tree.AsyncTreeNode({
                    id : Ext.get("category_firstNodeId").dom.value,
                    text : title,
                    expanded: true
                });
            }
            if(!nav){
                  
                nav = new Ext.tree.TreePanel({
                    width : 232,
                    height: 600,
                    autoScroll : true,
                    animate : true,
                    loader : loader,
                    root : root,
                    enableDD:true,
                    border:false,
                    listeners : {
                        'click' : function(node, event) {
                            if (node.isLeaf()) {
                                // 为叶子节点时,点击不进入链接
                              //  event.stopEvent();
                              //  alert(node.url);
                              //   window.open('http://www.google.com');
                            }
                        }
                    }
                });
                // 添加右键菜单
               // nav.on("contextmenu", this.showTreeMenu);
                // 当节点文本改变时触发事件
                nav.on("textchange", function(node, newText, oldText) {
                    if (!titleChangeFlag && newText != oldText) {
                        mgr.ajaxModifyTitle(node.id, newText, function(success) {          
                        });
                    }
                });
           
                // 当节点移动时触发事件
                nav.on("movenode", function(tree, node, oldParent, newParent, index) {  
                    mgr.updateMoveNode(node.id, oldParent.id, newParent.id, index+1, cateType, getReslut);
                });
                function getReslut(data)
                {
                    if(data == "error"){
                        Ext.Msg.alert($CON.WARM_NOTE,$CON.COLUMN_NOEXISTE);
                        
                    }
                    if(data == "false"){
                        Ext.Msg.alert($CON.WARM_NOTE,$CON.COLUMN_NOCHANGE);
                        
                    }
                }
                
                // 当节点移动前触发事件
                nav.on("beforemovenode", function(tree, node, oldParent, newParent, index) {
                    if(oldParent!=newParent){   
                        Ext.Msg.alert($CON.WARM_NOTE,$CON.COLUMN_NOCHANGE);
                    return false;
                    }
                });
               
                // 当节点删除时触发事件
                nav.on("remove", function(tree, parentNode, node) {
                    if (removeFlag) {
                        
                        mgr.ajaxRemoveParentById(node.id);
                    }
                });
                
                
            }
          
//            if(!navEditor){
//                navEditor = new Ext.tree.TreeEditor(nav, {
//                    allowBlank : false,
//                    ignoreNoChange : true,
//                    blankText : '标题不能为空',
//                    selectOnFocus : true
//                });
//            }
            this.setLeafMenu();
            this.setDirMenu();
        },
        setMgr : function(manager){
            mgr = manager;
        },
        getMgr : function(){
            return mgr;
        },
        setLeafMenu: function(){
            // 设置叶子菜单
            if(!leafMenu){
                leafMenu = new Ext.menu.Menu({
                    items : [{
                        text : $CON.TITLE_EDIT,
                        handler : function() {
                            navEditor.triggerEdit(nodeSelected);
                        }
                    }, "-", {
                        text : $CON.EDIT,
                        handler : function() {
                            FormEditWin.showEditLeafWin(nodeSelected);
                        }
                    }, "-", {
                        text : $CON.DELETE_ONE,
                        handler : this.delTreeItemComfirm
                    }]
                });
            }
        },
        setDirMenu: function(){
            // 设置目录菜单
            if(!dirMenu){
                dirMenu = new Ext.menu.Menu({
                    items : [{
                        text : $CON.TITLE_EDIT,
                        handler : function() {
                            navEditor.triggerEdit(nodeSelected);
                        }
                    }, "-", {
                        text : $CON.EDIT,
                        handler : function() {
                            FormEditWin.showEditDirWin(nodeSelected);
                        }
                    }, "-", {
                        text : $CON.LEAF_CHILDNODE_ADD,
                        handler : function() {
                            FormEditWin.showAddLeafWin(nodeSelected);
                        }
                    }, "-", {
                        text : $CON.AIMDIRECTORY_ADDNODE,
                        handler : function() {
                            FormEditWin.showAddDirWin(nodeSelected);
                        }
                    }, "-", {
                        text : $CON.DELETE_ONE,
                        handler : this.delTreeItemComfirm
                    }]
                });
            }
        },
        showTreeMenu : function(node, e){
            nodeSelected = node;
            nodeSelected.select();
            if (node.isLeaf()) {
                // 显示叶子节点菜单
                leafMenu.showAt(e.getPoint());
            } else {
                // 显示目录节点菜单
                dirMenu.showAt(e.getPoint());
            }
        },
        delTreeItemComfirm : function(){
            Ext.Msg.confirm($CON.DELETE_SURE, $CON.NODE_SUREDELETE, function(btn) {
                if (btn == "yes") {
                    NavTree.delTreeItem();
                }
            });
        },
        delTreeItem : function(){
            if (nodeSelected != nav.getRootNode()) {
                removeFlag = true;
                nodeSelected.remove();
                removeFlag = false;
            } else {
                Ext.Msg.alert($CON.WARM, $CON.NODE_NODELETE);
            }
        },
        show : function(){
        
            formWindow = new Ext.Window({
            modal:true,
            layout:'fit',     
            width:250,
            height: 400,
            resizable:true,   
            closeAction:'hide',  
            shim:false,  // 关键,设置此项为 false ,则最大化时 window不会撑破 tabPanel
            autoScroll:true,
              constrainHeader:true,  // 关键,设置此项为 true ,指定此 window 不会超过 tabPanel 的上面和左边
              style:"padding:0px;",                                       
            plain: true,   
            listeners:{  
                "hide":function(){  
                window.parent.lFrame.location.reload();
                }},
               items: [            
                   nav
               ]
        });

        formWindow.on('beforeclose',function(){Ext.Msg('sa');})
        formWindow.show();
        nav.getRootNode().toggle();
           
        }
    }
}();

// 文档加载完毕执行
Ext.onReady(function(){
    //Ext.BLANK_IMAGE_URL = "../scripts/ext/resources/images/default/s.gif";
    if(typeof(TreeDWR)=="undefined"){
         Ext.Msg.alert($CON.WARM_TIP,$CON.WRONG);
    }else{
         NavTree.setMgr(TreeDWR);
         NavTree.init();
         Text:$CON.LOADING;
    }
    
});


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值