wanglzheng 2010-05-14 17:14
浏览 248
已采纳

ext 树 排序

想把拖拽后排好的树的顺序保存下来,加一个按钮,取到json串。可是不知道怎样取到,急呀
menuTree:new Ext.tree.TreePanel({
title:'局所列表',
region:'west',
id:'extExample-tree',
autoScroll:true,
enableDD:true,//是否支持拖拽效果false
containerScroll: true,//是否支持滚动条
split:true,
width: 180,
minSize: 175,
maxSize: 300,
rootVisible:false,//是否显示跟节点
//collapseMode:'mini',//在分割线处出现按钮
collapsible: true,
margins:'0 0 5 5',
loader:new Ext.tree.TreeLoader({

dataUrl:'data.jsp'
}),
tools:[{
id:'refresh',
handler:function(){
var tree = Ext.getCmp('extExample-tree');
tree.root.reload();
}
}]
}),
/*nodedrop事件的实现函数,可以用ajax向后台传送数据。*/
treeNodeDrop:function(e){
var curTree = e.tree;//得到当前的tree

    var tmpDropNode = e.dropNode;
    var tmpDropedNode = e.target;
    var dropType = e.point;     
    alert(dropType)//dropType:above,append,below
    if(dropType=="append")
    {
    //进度提示
            Ext.MessageBox.show({
            title:"正在保存",
            msg:" ",
            progress:true,
            width:300,
            wait:true,
            waitConfig:{interval:600},//0.6s进度条自动加载一定长度
            closable:true
        });
    Ext.Ajax.request({
        url:'dragtree.jsp',
        method:'post',
        params:{begin:tmpDropNode.id,end:tmpDropedNode.id,type:dropType},
        success: function(response, option) {
            Ext.MessageBox.hide();
            var result = response.responseText;
            Ext.MessageBox.alert("系统提示",result); 
        },

        failure: function(response, option) {
            //nodeEdited.setText(oldValue);//如果失败则将改过的节点恢复原状
            Ext.MessageBox.hide();
            Ext.MessageBox.alert("系统提示","Error"); 
            //alert("异步通讯失败,请重试或与管理员联系!");
        }
    });
    }//end if (dropType=="append")
    else {Ext.MessageBox.alert("系统提示"," 不支持排序功能,只能拖到'目标文件夹位置'实现移动功能"); 
          var tree = Ext.getCmp('extExample-tree');
         tree.root.reload();
          }
}
  • 写回答

2条回答 默认 最新

  • qwe_rt 2010-05-14 17:32
    关注

    先要展开所有的树节点,然后获取。

    下面例子就是在这个树展开完毕之后就会把所有节点放到一个div里面,

    tree.js代码:
    [code="javascript"]var root = null;;
    Ext.onReady(function() {
    root = new Ext.tree.TreeNode({
    id : '0',
    text : 'Root',
    leaf : false,
    checked: true
    });
    var level1 = new Ext.tree.TreeNode({
    id : '01',
    leaf : false,
    text : 'Level 1 -1',
    checked: true
    });
    level1.appendChild(new Ext.tree.TreeNode({
    id : '011',
    leaf : false,
    text : 'Level 2 -1',
    checked: true
    }));
    level1.appendChild(new Ext.tree.TreeNode({
    id : '012',
    leaf : false,
    text : 'Level 2 -2',
    checked: true
    }));
    level1.appendChild(new Ext.tree.TreeNode({
    id : '013',
    leaf : false,
    text : 'Level 2 -3',
    checked: false
    }));
    root.appendChild(level1);
    root.appendChild(new Ext.tree.TreeNode({
    id : '02',
    leaf : true,
    text : 'Level 1 -2',
    checked: true
    }));

    var tree = new Ext.tree.TreePanel({
        applyTo : 'tree-ct',
        width : 568,
        height : 300,
        checkModel : 'cascade',
        onlyLeafCheckable : true,
        animate : false,
        rootVisible : true,
        autoScroll : true,
        root : root
    });
    
    tree.getRootNode().expand();
    
    getSelectedItems("Root",root);
    

    });

    //从根节点遍历整个tree, 把叶子列出来放在一个div里面,
    function getSelectedItems(parentPath, _root){
    if(_root){
    var nodes = _root.childNodes;
    if(nodes.length==0){
    return;
    }
    for(var i=0; i<nodes.length; i++){
    var div = document.createElement("div");
    div.appendChild(document.createTextNode(parentPath + "\" + nodes[i].text));
    document.getElementById("selectedItems").appendChild(div);
    if(!nodes[i].leaf){
    //递归调用自己,以实现遍历
    getSelectedItems(parentPath+ "\" + nodes[i].text, nodes[i]);
    }
    }
    }
    }

    [/code]
    jsp代码:
    [code="jsp"]


    starting page
    <库文件需要你自己填上>
    <script type="text/javascript">
    
    </script>
    
    <style type="text/css">
    
    </style>
    



    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 我这模型写的不对吗?为什么lingo解出来的下面影子价格这一溜少一个变量
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波