当前位置: 代码迷 >> Web前端 >> ext treepanel 范例
  详细解决方案

ext treepanel 范例

热度:845   发布时间:2012-11-10 10:48:51.0
ext treepanel 实例

在html的页面里的代码:

?

<div id="combotree" style="float:left;display:block;">
    	<!--先隐藏此树形-->
        <div id="divmodule" style="float:left;display:none;position: absolute;"></div>
    	<!--点击文本框的时候,显示树形结构 -->
        <input type="text" id="input_module" name="input_module" readonly onclick="document.getElementById('divmodule').style.display='block'">
       	<!-- 这个hidden用来向后台传数据 -->
        <input type="hidden" id="tomodule" name="tomodule">
</div>

?

下面是EXT 部分,

此部分代码放在 Ext.onReady(function(){ }); 里

var _Tree = Ext.tree;  
    // 定义根节点的Loader  
    var _treeloader = new _Tree.TreeLoader({  
            // dataUrl : 'tree.jsp'//这里可以不需要指定URL,在加载前事件响应里面设置  
            });  
    // 添加一个树形面板  
    var _treepanel = new _Tree.TreePanel({  
        // renderTo:"tree_div",//如果使用renderTo,则不能使用setRootNode()方法,需要在TreePanel中设置root属性。  
        el : 'divmodule',// 将树形添加到一个指定的div中,非常重要!  
        region : 'west',  
        title : '功能模块',  
        width : 200,//面板宽度  
        minSize : 180,  
        maxSize : 250,  
        split : true,  
        autoHeight : false,  
        frame : true,// 美化界面  
        // title : '可编辑和拖动的异步树',//标题  
        // autoScroll : true, // 自动滚动  
        enableDD : true,// 是否支持拖拽效果  
        containerScroll : true,// 是否支持滚动条  
        rootVisible : true, // 是否隐藏根节点,很多情况下,我们选择隐藏根节点增加美观性  
        border : true, // 边框  
        animate : true, // 动画效果  
        loader : _treeloader // 树加载  
        });  
          
        // 异步加载根节点  
       var _rootnode = new _Tree.AsyncTreeNode({  
                id : '0',  
                text : '请选择...',  
                draggable : false,// 根节点不容许拖动  
                expanded : true  
            });  
      // 为tree设置根节点  
      _treepanel.setRootNode(_rootnode);  
        
      // 响应加载前事件,传递node参数  
     _treepanel.on('beforeload', function(node) {  
           _treepanel.loader.dataUrl = 'getModuleList_dao.asp?id=' + node.id; // 定义子节点的Loader  
		});  
	 
  	_treepanel.on("append", function(a,b,node) {
		//根据实际情况来判定叶子节点
               //alert(node.getDepth());
		if (node.getDepth()==3)
		{
			node.leaf=true;
		}else{
			node.leaf=false;
		}
	});
    // 渲染树形  
    _treepanel.render();  
    // 展开节点,第一个参数表示是否级联展开子节点  
    _rootnode.expand(false);  
	//属性的点击时间
	 _treepanel.on('click', function(node,e){
		 if (!node.isLeaf()) {  //不是叶子节点,就stop
            e.stopEvent();  
		 }else{
			document.getElementById("divmodule").style.display="none"; //隐藏树形结构的div
			document.getElementById("input_module").value=node.text; //将选中的节点的显示的值赋予文本框
			document.getElementById("tomodule").value=node.id;//用hidden保存实际节点的id值
		}
	}); 


?

loader.dataurl 去获取需要的数据,本次实验中,用json格式的记录数据,数据格式:

[{id:"1",text:"AAA"},{id:"2",text:"BBB"}]

?

到此结束。如果有不懂地方可以参考:

http://youshini.iteye.com/blog/1072961

?

?