`
yadsun
  • 浏览: 181356 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ExtJS--创建可收展的侧边导航栏

阅读更多
    近几天一直在想怎样把树形菜单弄成可收放的侧边栏,搞了好几天都没有出来侧边的效果,今天终于出来了,原来是没有用Viewport显示
    Ext API中对Viewport的描述如下
    "A specialized container representing the viewable application area (the browser viewport).
   
    The Viewport renders itself to the document body, and automatically sizes itself to the size of the browser viewport and manages window resizing. There may only be one Viewport created in a page. Inner layouts are available by virtue of the fact that all Panels added to the Viewport, either through its items, or through the items, or the add method of any of its child Panels may themselves have a layout.
   
    The Viewport does not provide scrolling, so child Panels within the Viewport should provide for scrolling if needed using the autoScroll config."
    treepanel.html文件内容
   
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <link rel="stylesheet" type="text/css" href="../extjs/resources/css/ext-all.css" />
    <link rel="stylesheet" type="text/css" href="../css/menu.css" />
    <!--<link rel="stylesheet" type="text/css" href="../extjs/docs/resources/docs.css" />-->
    <script type="text/javascript" src="../extjs/adapter/ext/ext-base-debug.js"></script>
    <script type="text/javascript" src="../extjs/ext-all-debug.js"></script>
    <script type="text/javascript" src="../js/functreepanel.js"></script>
    <title>Function TreePanel</title>
    </head>
    <body>
    </body>
    </html>
    

   
    functreepanel.js文件内容
   
    FuncPanel = function(){
    	FuncPanel.superclass.constructor.call(this,{
    		id: 'func-tree',
    //		renderTo: 'funcs',//此处不应有,否则会使设置的布局无效
    		region: 'west',//在整个布局中的位置
    		useArrows: true,
    		lines: false,
    		width: 200,
    		margins:'0 5 5 0',//top,right,bottom,left填充
    		autoScroll: true,
            split: true,
            collapseMode: 'mini',//收展按钮的样式
    		rootVisible: false,
    		root: {
    			text: 'ROOT',
    			nodeType: 'async'
    		},
    		dataUrl: '../js/nodes.json'//树节点的数据源
    	}/*param config*/);
    };
    
    Ext.extend(FuncPanel,Ext.tree.TreePanel,{
    	initComponent: function(){
            Ext.apply(this, {
                tbar: ['->',{
                    iconCls: 'icon-expand-all',//自定图标义样式
    				text: 'Expand',
                    handler: function(){ this.root.expand(true); },
                    scope: this
                }, '-', {
                    iconCls: 'icon-collapse-all',//自定图标义样式
                    text: 'Collapse',
                    handler: function(){ this.root.collapse(true); },
                    scope: this
                }]
            });
            FuncPanel.superclass.initComponent.call(this);
        }
    });
    
    BodyPanel = function(){
    	BodyPanel.superclass.constructor.call(this,{
    		id: 'func-body',
    		region: 'center',
    		margins:'0 5 5 0', 
    //		renderTo: 'func-body',
    		html: 'This is body area ... ...
',
    		autoScroll: true
    	}/*param config*/);	
    };
    
    Ext.extend(BodyPanel,Ext.Panel,{
    	initComponent: function(){
    		Ext.apply(this,{
    			tbar: ['->',{
    							text: 'Refresh',
    							iconCls: 'icon-refresh'//自定图标义样式
    						}
    				  ]
    		})
    	BodyPanel.superclass.initComponent.call(this);
    	}
    });
    
    Ext.onReady(function(){
    	var fpl = new FuncPanel();//左侧panel
    	var mainPanel = new BodyPanel();//中间panel
    	var viewport = new Ext.Viewport({//用来展示页面的容器
    							layout:'border',
    							items:[fpl, mainPanel]//将FuncPanel和FuncBody放入其中显示
    						}); 
    	viewport.doLayout(); 
      }
    );
    

    导航栏展开
   
    菜单树全展开
   
    导航栏收起
   

6
0
分享到:
评论
2 楼 yadsun 2010-01-06  
neeke 写道
不一定需要viewport吧,貌似只要容器是border布局就可以。

我试了一下用Ext.Panel,它跟Ext.Viewport一样是继承自Container,结果不行。我想可能是因为The Viewport renders itself to the document body, and automatically sizes itself to the size of the browser viewport and manages window resizing.(注意红色部分),所以需要调用panel的render()方法,我是这样调的 panel.render(Ext.getBody());可是这样的话必需要对panel手动setHeight();否则就只看到一条边缩在顶部,不知道这有没有方法设置...

var panel = new Ext.Panel({// 用来展示页面的容器
		layout : 'border',
		items : [fpl, mainPanel]
			// 将FuncPanel和FuncBody放入其中显示
	});
	panel .setHeight(400);
	panel .render(Ext.getBody());
	panel .doLayout();
1 楼 neeke 2010-01-06  
不一定需要viewport吧,貌似只要容器是border布局就可以。

相关推荐

    extjs-OA extjs-oa

    一个extjs的OA项目 extjs-OA extjs-oaextjs-OA extjs-oa

    extjs-620-docs.zip

    extjs-620-docs官方文档extjs-620-docs官方文档extjs-620-docs官方文档

    extjs extjs-basex.js

    extjs-basex.js extjs-basex.js extjs-basex.js

    extjs-4.1.1.zip

    在"extjs-4.1.1.zip"这个压缩包中,包含了ExtJS框架的4.1.1版本,这是一个成熟的版本,具有丰富的功能和优化的性能。 ExtJS的核心特性包括组件化设计、可定制的布局管理、强大的数据绑定机制以及一系列预设的UI组件...

    extjs-theme-bootstrap

    总之,"extjs-theme-bootstrap" 是一个将 EXTJS4 的功能性和 Bootstrap 的美观设计结合的主题,为开发者提供了一种创建专业且用户友好的 Web 应用程序的途径。通过深入理解这个主题的结构和工作原理,你可以轻松地将...

    extjs-v7.0-cmd

    extjs-cmd 脚手架安装包2 extjs-cmd 脚手架安装包3 extjs-cmd 脚手架安装包4

    extjs-4.1.1 ExtJs所有文档及库文件

    extjs-4.1.1 ExtJs所有文档及库文件,在官网下的,这个版本很好,放在这方便大家下载!

    extJs-5.0.1-gpl(part1)

    extJs-5.0.1-gpl附带sencha cmd安装程序、ruby编译包(分为32位和64位)和教程,一共四部分

    extjs-653-docs.zip

    extjs-6.5.3离线API文档,是学习和开发的必要工具。希望有所帮助!

    extjs-core 3.0 beta版

    extjs-core 3.0 beta版extjs-core 3.0 beta版SDK extjs-core 3.0 beta版extjs-core 3.0 beta版

    extjs-4.0.2框架

    ExtJS是一种主要用于创建前端用户界面,是一个基本与后台技术无关的前端ajax框架。功能丰富,无人能出其右。无论是界面之美,还是功能之强,ext的表格控件都高居榜首。单选行,多选行,高亮显示选中的行,推拽改变列...

    ExtJS-4.2.6-src-926个类源码

    Ext JS 4.2.6.1811 Release Date: October 5, 2016 Version Number: 4.2.6.1811 ext-src class 926

    extjs-theme-bootstrap-master.zip

    "extjs-theme-bootstrap-master.zip" 文件很可能是ExtJS的一个主题包,它集成了Bootstrap的样式,使得ExtJS组件能够呈现出Bootstrap的经典外观。 在深入讲解这个主题之前,让我们先了解一下基础概念: 1. **ExtJS*...

    ExtJS--Windows.rar_extjs_extjs CSharp_extjs windows

    这个名为"ExtJS--Windows.rar"的压缩包显然是关于如何使用ExtJS来模仿Windows桌面应用的示例或教程。让我们深入探讨一下ExtJS以及如何利用它来实现这样的效果。 1. **ExtJS框架**:ExtJS是由Sencha公司开发的一个...

    extjs-docs-6.0.0-classic.part02.rar

    Ext JS 6最大的变化就是将Ext JS和Touch合并为一个单一的框架。之前的框架的核心(数据、控制器、模型等等)已被调和为一个单一的公共平台。这样,数据和逻辑就能共享,从而帮助开发人员进一步去优化他们的应用程序...

    extjs-4.1.1官方免费版

    extjs-4.1.1为extjs官方免费版,解压之后引入对应的css和js即可使用

    Extjs--DWR做的动态树

    这篇博客文章"Extjs--DWR做的动态树"可能探讨了如何利用这两者结合来创建动态的树形数据结构,这种结构在很多Web应用中用于展示层次化的信息,比如文件系统、组织结构或导航菜单。 动态树在Web应用中是交互式的,...

    ExtJs-3.2.0.rar

    这个"ExtJs-3.2.0.rar"压缩包包含了ExtJS 3.2.0版本的所有资源,允许开发者利用其强大的组件库和丰富的功能来创建交互式、数据驱动的网页应用。 1. **ExtJS框架介绍** ExtJS提供了一套完整的UI组件,包括表格、树...

    ExtJS-6.2.0离线API文档

    ExtJS-6.2.0官方离线API文档

Global site tag (gtag.js) - Google Analytics