extjs treepanel

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<%@ include file="common/extjs.jsp" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>

<head>
<title>Insert title here</title>


</head>

<body>

<div id="tree-panel" style="overflow:auto; height:300px;width:200px;border:2px solid #c3daf9;"></div>
<script type="text/javascript">
 Ext.onReady(function() {

    Ext.QuickTips.init();// 浮动信息提示

    Ext.BLANK_IMAGE_URL = 'images/default/s.gif';// 替换图片文件地址为本地

    // 创建一个简写

    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 : 'tree-panel',// 将树形添加到一个指定的div中,非常重要!

        region : 'west',

        title : '功能菜单',

        width : 200,

        minSize : 180,

        maxSize : 250,

        split : true,

        autoHeight : false,

        frame : true,// 美化界面

        // width : 200,//面板宽度

        // 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 = 'tree.jsp?parentId=' + node.id; // 定义子节点的Loader

            });

    // 渲染树形

    treepanel.render();

    // 展开节点,第一个参数表示是否级联展开子节点

    rootnode.expand(true);

 
 

    // (1)通过TabPanel控件的html属性配合<iframe>实现。该方法是利用

    // html属性中包含<iframe>的语法来调用另一个页面,具体见代码。

    // (2)通过TabPanel控件的autoLoad属性实现。该方法是利用autoLoad属性,它有很多参数,

    // 其中有两个比较重要,url表示要载入的文件,scripts表示载入的文件是否含有脚本,该属性相当重要,

    // 如果在新的页面中要创建Ext控件,必须指定该参数。该方法实现较前一个复杂,因为引入的文件不是一个完整的html文件,

    // 有可能只是内容的一部分,但是资源占用较少,而且载入速度较快(它有一个载入指示)

 

    // 添加第一个节点(html)

    treepanel.root.appendChild(new Ext.tree.TreeNode({

        id : 'htmlPanel',

        text : '通过html打开',

        listeners : {

            'click' : function(node, event) {

                event.stopEvent();

                var n = contentPanel.getComponent(node.id);

                if (!n) { // 判断是否已经打开该面板

                    n = contentPanel.add({

                        'id' : node.id,

                        'title' : node.text,

                        closable : true, // 通过html载入目标页

                        html : '<iframe scrolling="auto" frameborder="0" width="100%" height="100%" src="grid.html"></iframe>'

                    });

                }

                contentPanel.setActiveTab(n);

            }

        }

    }));

 

    // 添加第二个节点(autoLoad)

    treepanel.root.appendChild(new Ext.tree.TreeNode({

                id : 'autoLoadPanel',

                text : '通过autoLoad打开',
                 draggable : false,

                listeners : {

                    'click' : function(node, event) {

                        event.stopEvent();

                        var n = contentPanel.getComponent(node.id);

                        if (!n) { // //判断是否已经打开该面板

                            n = contentPanel.add({

                                        'id' : node.id,

                                        'title' : node.text,

                                        closable : true,

                                        autoLoad : {

                                            url : 'tabFrame.jsp?url=grid.html',

                                            scripts : true

                                        } // 通过autoLoad属性载入目标页,如果要用到脚本,必须加上scripts属性

                                    });

                        }

                        contentPanel.setActiveTab(n);

                    }

                }

            }));

  // 添加第3个节点(autoLoad)
    treepanel.root.appendChild(new Ext.tree.TreeNode({

                id : 'autoLoadPanel2',

                text : '通过autoLoad打开2',
                 draggable : false,
                 leaf : true
            }));

    // 右边具体功能面板区

    var contentPanel = new Ext.TabPanel({

        region : 'center',

        enableTabScroll : true,

        activeTab : 0,

        items : [{

            id : 'homePage',

            title : '首页',

            autoScroll : true,

            html : '<div style="position:absolute;color:#ff0000;top:40%;left:40%;">Tree控件和TabPanel控件结合功能演示</div>'

        }]

    });

  // 设置树的点击事件

    function treeClick(node, e) {

        if (node.isLeaf()) {

            e.stopEvent();

            var n = contentPanel.getComponent(node.id);

            if (!n) {

                var n = contentPanel.add({

                            'id' : node.id,

                            'title' : node.text,

                            closable : true,

                            autoLoad : {

                                url : 'tabFrame.jsp?url=grid.html',

                                scripts : true

                            } // 通过autoLoad属性载入目标页,如果要用到脚本,必须加上scripts属性

                        });

            }

            contentPanel.setActiveTab(n);

        }

    }

    // 增加鼠标单击事件

    treepanel.on('click', treeClick);
 

    new Ext.Viewport({

                layout : 'border', // 使用border布局

                defaults : {

                    activeItem : 0

                },

                items : [treepanel, contentPanel]

            });

 

});

</script>
</body>

</html>


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值