Extjs 4 Tree 异步分级别加载子节点

本文介绍如何使用ExtJS框架创建一个类似资源管理器的树形菜单,展示文件夹及子文件夹结构。通过前后端代码配合,实现动态加载树形结构,并在节点展开时动态更改请求URL。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目的:将一个文件夹下的所有文件和子文件 以树的形式显示在网页中,类似于资源管理器

前台代码

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=='总公司')
				{

                             		               }
				 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);
    }
 

 扩展,每个节点展开时,如何改变每次服务请求的URL 地址,extraParams 参数值,在beforeitemexpand事件中,调用store.setProxy()方法

listeners:{
		     '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
				 }
			 }
		  }

 

转载于:https://www.cnblogs.com/marky/archive/2013/05/16/3081907.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值