我的树有很多节点,我想实现展开一个节点后,然后请求服务器,获取下一级别的数据,然后添加到该节点下面,而不是一开始就加载所有节点?该如何写呢???Extjs 4.0  没有TreeLoader了,只有Ext.data.TreeStore跪求  利用Ext.data.TreeStore实现异步加载子节点!谢谢 

解决方案 »

  1.   

    撸主,你现看看这个,如果还是没有头绪,你追问下。
    分布加载tree node
      

  2.   


    谢谢 我成功实现分布异步加载,实现每次展开节点请求服务,但是我想进一步请教下,假如我每次展开的地址,请求的服务地址不同,该如何写?我试了下添加beforeitemexpand 事件,但是不成功,不知如何修改
    var store2 = Ext.create('Ext.data.TreeStore', {  
            proxy: { 
                type: 'ajax',  
                url: '../TreeTest.ashx'  
            },  
            fields:['id','text']//跟旧版本extjs一样,节点的id和显示文本  
        });  
          
        var AsyncTree2 = Ext.create("Ext.tree.Panel",{  
            title: 'Simple Tree2',  
            width:300,  
            height:300,  
            collapsible: true,  
            singleExpand: true,  
    useArrows: true,
            root: {  
                id:1,  
                text: "hehe",  
                expanded: true  
              
            },  
            store:store2,  
        renderTo: 'tree-div',
    listeners:{
         'beforeitemexpand':function(node,optd)
     {
        if(node.data.text=='总公司')
    {
         //alert("aa");
    // node.data.leaf=true;
       var  mystore=AsyncTree2.getStore()
       mystore.proxy.url='../TreeTest11.ashx?' 
      mystore.load();

     }
     else
     {
      // node.leaf=true
     }
     }
      }
      
      });});    public void ProcessRequest (HttpContext context) {
            context.Response.ContentType = "text/plain";
           // context.Request.Params["bumen"]; ;
            string id = context.Request.Params["node"];
            string result = "";
            if (id == "1")
            {
                result = "[{'text':'总公司','id':100}]";
            }
            else if (id == "100")
            {
                result = "[{'text':'分公司一','id':110,leaf:true},{'text':'分公司二','id':120}]";
            }
            else if (id == "120")
            {
                result = "[{'text':'部分一','id':1200,leaf:true},{'text':'部门二','id':1300,leaf:true}]";
            }
            context.Response.Write(result);
        }
     
      

  3.   


    果然要这样写啊 ,屌爆了 谢谢
         'beforeitemexpand':function(node,optd)
     {
        if(node.data.text=='总公司')
    {
              var tt=node.data.text;
      var  mystore=AsyncTree2.getStore()
    //   mystore.proxy.url='../TreeTest.ashx?aa==vv' 
    //  mystore.load();
       mystore.setProxy({
                                           type:'ajax',                                       url:'../TreeTest11.ashx' ,
                                           extraParams:{time:tt}                                      })  }
     else
     {
      // node.leaf=true
     }
     } 
      

  4.   

    if(node.data.text=='总公司')
    这样写 只有 ‘总公司’ 这个节点是异步,那‘总公司’的子节点就不是异步了?
    怎么写才能让‘总公司’和他的子节点全部是异步呢?