extjs4的tree.Panel同节点下的叶子节点互换位置(上移,下移)

酷酷的就 发布于 2016/05/10 11:43
阅读 494
收藏 0

自学写的一个demo, 现在想实现同节点下叶子节点上移/下移操作, 不知道该怎么弄

  itemcontextmenu: function(view, record, item, index, e, eOpts) {
    e.preventDefault();  e.stopEvent();
    ///if(0==cellIndex) { e.preventDefault() ; e.stopEvent(); }  
    var id = record.raw.id,
        node = view.getSelectedNodes()[0],
        parent = record.parentNode;
    var changeOrder = function(rid1, rid2, callback) {
        //ajax发起请求到后台同步换节点顺序
        console.log("rid1=[" + rid1 + "]," + "rid2=[" + rid2 + "]");
        $.post("/change", {
            r1: rid1, r2: rid2
        }, function(dt) {
            if (dt.retcode == 0) { callback.call();} 
            else {  alert(dt.retmsg);  }
        });
    };
    var getIndex = function(nds) {
        for (var i = 0; i < nds.length; i++) {
            var r = nds[i];
            if (r.raw.id == id) return i;
        }
        return -1;
    };
    var thisIndex = getIndex(parent.childNodes);
    var beforeRecord = parent.childNodes[thisIndex - 1],
        afterRecord = parent.childNodes[thisIndex + 1];
    var contextmenu = Ext.create('Ext.menu.Menu', {   float: true  });
    if (null != beforeRecord) {
        var newid = beforeRecord.raw.id;
        var itembefore = contextmenu.add({    text: "↑&nbsp;&nbsp;&nbsp;上移"   });
        itembefore.on('click', function() {  changeOrder(id, newid, function() { /*extjs实现节点上移*/ });  });
    }
    if (null != afterRecord) {
        var newid = afterRecord.raw.id;
        var itemafter = contextmenu.add({  text: "↓&nbsp;&nbsp;&nbsp;下移"  });
        itemafter.on('click', function() {   changeOrder(id, newid, function() { /*extjs实现节点上移*/ });   });
    }
    if (null != beforeRecord || null != afterRecord) contextmenu.showAt(e.getXY());
} 

 效果如下:


现在 在 "extjs实现节点上移" 那个地方,不知道该怎么写了. 

加载中
返回顶部
顶部