`

ExtJS布局之border实例

阅读更多

border布局是常见的布局样式,下面是一个实际项目的示例,比较简单,仅供初学者参考。

 

前两天遇到一个border布局的界面问题,如下:

west是一个tree a,center是一个tree b和一个Panel,如下图

 

 

界面要求:

点击左边树节点【培训项目】,打开右边的界面:包括一个树和一个panel。

 

功能要求:

点击右边树的节点,班型列表会根据树节点的ID进行查询,并显示相应的查询结果。

 

问题:

整个界面的右半部分怎样布局?

 

解决:

左边的tree就不用解释了,是哪里都能找到的样式。这里主要解释下右半部分的布局:

通常情况下,点击树节点,在布局的某个部分(常见的是center位置)打开一个界面的常用方式是:

 

contentEl : 'center1',
html : '<iframe scrolling="auto" frameborder="0" width="100%"height="100%" src="classTypeNew.jsp"></iframe>'

 

但这种方式不能在目前场景下使用,因为panel要能获得从tree b传递过来的参数,所以上面这种方式是不行的:classTypeNew.jsp无法获得tree b的节点ID。

 

建议采用如下方式:

1.整体采用border布局。tree a位于west,tree b和Panel位于center。

2.tree b和Panel采用border布局。tree b位于west,Panel位于center。

 

示例代码:

/**
	 * 班型管理部分
	 */
	var _JwSales = new Ext.Panel({
		region : 'center',
    	collapsible:true,    	    	
    	items:[_gridStudyClassType,_panelStudyClassTypeInf,_panelStudyClassTypeNodes],
		
		listeners:{
			"show":function(){
			
				_panelStudyClassTypeInf.getForm().reset();
				
				_sessionStore.load();
		
				var _record = _sessionStore.getAt(0);
				
				Ext.getCmp("iStudyClassTypeOprUserName").setValue(_record.get("userName"));
				Ext.getCmp("iStudyClassTypeOprUserId").setValue(_record.get("userId"));
			}
		},
		
		buttons:[
			{
				text:"保存",
				
				listeners:{
					"click":function(){
					
						var stId = Ext.getCmp("iStudyClassTypeStId").getValue();
					
						if(_panelStudyClassTypeInf.getForm().isValid())
						{
							var arrayInfKey = getArrayStudyClassTypeKey();
							
							var arrayInfValue = getArrayStudyClassTypeValue();
							
							var arrayNodesKey = getStudyTypeNodesKey();
							
							var arrayNodesValue = getStudyTypeNodesValue();							
														
							if(stId == "")
							{
								//添加
								
								MSClassType.isDo4Add(Ext.getCmp("iItemCombo").getValue(),
														"stName",
															Ext.getCmp("iStudyClassTypeStName").getValue(),
									function addRtn(rtn)
									{
										if(rtn == "true")
										{
											MSClassType.createEntity(
												arrayInfKey,arrayInfValue,
												arrayNodesKey,arrayNodesValue,
												
												function createEntityRtn(rtnCreate){
									
													if(rtnCreate == "success")
													{
														Ext.MessageBox.alert("信息提示","添加成功,点击返回!");
												
														_storeStudyClassType.load({params:{start:0,limit:6}});
														
														Ext.MessageBox.alert("信息提示","添加成功,点击返回!");
														
														addHandler();
													}
													else
													{
														Ext.MessageBox.alert("信息提示","添加失败,请与系统管理员联系!");
													}
												}
											);
										}
										else
											Ext.getCmp("iStudyClassTypeStName").markInvalid("已经存在的班型名称");
									}
								);
							}
							else
							{
								if(Ext.getCmp("iStudyClassTypeStatus").getValue() != "1")
								{
									Ext.MessageBox.alert("信息提示","已经提交或删除,无法修改!");
									
									return ;
								}
								
								/*
								 * arrayTextbooksKey,arrayTextbooksValue,
												arrayEmsKey,arrayEmsValue,
												arrayGiftsKey,arrayGiftsValue,
												arrayPsKey,arrayPsValue,
								 * */
								
								//修改
								MSClassType.isDo4Edit(Ext.getCmp("iItemCombo").getValue(),stId,
														"stName",
															Ext.getCmp("iStudyClassTypeStName").getValue(),
									function editRtn(rtn)
									{
										if(rtn == "true")
										{
											MSClassType.updateEntity(
												stId,arrayInfKey,arrayInfValue,
												arrayNodesKey,arrayNodesValue,
												
												function updateEntityRtn(rtnUpdate){
									
													if(rtnUpdate == "success")
													{
														Ext.MessageBox.alert("信息提示","更新成功,点击返回!");
												
														_storeStudyClassType.load({params:{start:0,limit:9}});
														
														Ext.MessageBox.alert("信息提示","更新成功,点击返回!");
													}
													else
													{
														Ext.MessageBox.alert("信息提示","更新失败,请与系统管理员联系!");
													}
												}
											);
										}
										else
											Ext.getCmp("iStudyClassTypeStName").markInvalid("已经存在的班型名称");
									}
								);
							}
						}
					}
				}
			},
			{
				text:"提交",
				handler:submitHandler
			},
			{
				text:"清空",
				handler:addHandler
			}
		]
	});


var _treeItem = new Ext.tree.TreePanel({
		
		title : '导航栏',
		region : 'west',
		split : true,
		border : true,
		bodyStyle: 'background-color:#FFFFFF',
		collapsible : true,
		autoScroll : true,
		width : 180,
		minSize : 180,
		maxSize : 280,
		enableDD : true,
		
		el:"_treeItemDiv",
		id:"_treeItem",
		loader : new Ext.tree.TreeLoader({dataUrl :'itemData.jsp'}),
		
		listeners:{
			'dblclick':function(node,e){
				var subjectID = node.attributes.id;//科目ID
				alert("科目ID = "+ subjectID);
				
				_storeStudyClassType.removeAll();
				_storeStudyClassType.load({params:{start:0,limit:20,subjectID:node.attributes.id}});
			},
			
        	"contextmenu":function(node,e){
            	
            	if(node.attributes.id == "0")
            	{
            		var nodemenu=new Ext.menu.Menu({
                  
            		items:[
            			{
                        	text:"添加项目",
        					iconCls:'icon-table-add',
       						handler:function(){
         			 			
       							_winBaseItemOpr.setTitle("项目管理-添加");
       							_winBaseItemOpr.show();
       							
       							_panelBaseItemOpr.getForm().reset();		
								
       							Ext.getCmp("iStudyBaseItemSuperiorItemId").setValue(node.attributes.id);
       							Ext.getCmp("iStudyBaseItemShowIndex").setValue(node.childNodes.length+1); 
              				}
          				}
                        ]
        			});
        		
        			nodemenu.showAt(e.getPoint());
            	}
            	else
            	{
            		var nodemenu=new Ext.menu.Menu({
                  
            		items:[
            			{
                        	text:"删除项目",
        					iconCls:'icon-minus',
       						handler:function(){
         			 			
       							
              				}
          				},{
                        	text:"修改项目",
        					iconCls:'icon-table-edit',
       						handler:function(){
         			 			
       							_winBaseItemOpr.setTitle("项目管理-浏览");
       							_winBaseItemOpr.show();
       							
       							_panelBaseItemOpr.getForm().reset();
       							
       							Ext.getCmp("iStudyBaseItemItemId").setValue(node.attributes.id);
       							Ext.getCmp("iStudyBaseItemItemName").setValue(node.attributes.text);
       							Ext.getCmp("iStudyBaseItemSuperiorItemId").setValue(node.attributes.superiorItemId);
       							Ext.getCmp("iStudyBaseItemShowIndex").setValue(node.attributes.showIndex);
       							Ext.getCmp("iStudyBaseItemInf").setValue(node.attributes.inf);
              				}
          				}]
        			});
        		
        			nodemenu.showAt(e.getPoint());
            	}
         	}
		}
	});

 	var _rootItem = new Ext.tree.AsyncTreeNode({text:"尚德教育在线",id:"0"});
 	
	_treeItem.setRootNode(_rootItem);	
	
	var _panelOrg = new Ext.form.FormPanel({
    	collapsible:true,
    	frame:true,
    	width:bodyWidth,
    	height:bodyHeight,
    	items:[_treeItem],
    	autoScroll:true
	});

	_panelOrg.render("_panelItemDiv");
	
	_rootItem.reload();
	
	
	/**
	 * 生成一个ViewPort,采用Border布局,保留天地栏,左中栏
	 */
	var viewport = new Ext.Viewport({
		layout : 'border',
		items : [_treeItem, _JwSales]
	});



 

 

 

  • 大小: 72.5 KB
3
0
分享到:
评论

相关推荐

    ExtJS布局之border实例中文WORD版

    资源名称:ExtJS布局之border实例 中文WORD版内容简介:border布局是常见的布局样式,本文档中一个实际项目的示例,比较简单,仅供初学者参考。感兴趣的朋友可以过来看看资源截图: 资源太大,传百度网盘了,链接在...

    ExtJs常用布局--layout详解实例代码

    ExtJs常用布局--layout详解实例代码: ExtJs常见的布局方式有:border、form、absolute、column、accordion、table、fit、card、anchor 另外,不常见的布局有:tab、vbox、hbox 具体使用方法可见该文件的案例代码。 ...

    Extjs4.1.1

    第十讲.ExtJS布局模式-Column、Table、Border 第十一讲.ExtJS布局模式-Box布局、使用ViewPort布局首页 第十二讲.ExtJS之Ext常用函数 第十三讲.ExtJS之Ext常用函数(二) 第十四讲.初识Ajax 第十五讲.ExtJS对...

    extjs布局管理学习指南

    ### ExtJS布局管理学习指南 #### 一、引言 ExtJS是一款强大的JavaScript框架,用于构建复杂的前端应用程序。其中布局管理是ExtJS的核心特性之一,它可以帮助开发者有效地组织UI组件,使得用户界面既美观又实用。...

    ExtJS之布局详解

    以下是关于ExtJS布局的详细解释: 1. **基本知识:布局操作** - 布局操作涉及容器组件内的子元素组件如何组织和分布。 - 布局的基类是`Ext.layout.ContainerLayout`,它提供了所有布局的基础功能,但本身并不具有...

    asp.net下extjs完整实例

    在样式和布局方面,EXTJS提供了灵活的布局管理器,如Fit布局、Border布局等,可以轻松地适应各种屏幕尺寸。结合ASP.NET的CSS样式控制,可以创建出响应式的设计,满足不同设备的访问需求。 总结来说,"asp.net下...

    Extjs3.0学习实例

    2. **布局管理**:ExtJS提供了多种布局方式,如Fit布局、Border布局、Form布局、Table布局等,可以灵活地调整组件在容器中的排列和尺寸。 3. **数据绑定**:ExtJS的数据绑定机制允许将UI组件与后台数据源直接关联,...

    extjs2.2技术文档与实例

    例如,`Ext.Panel`用于创建可配置的容器,可以包含其他组件,并支持各种布局(如fit布局、border布局、form布局等)。 数据绑定是ExtJS的一个核心特性,它使得视图和数据模型之间可以实现自动同步。数据源可以是...

    extjs实践大量实例讲解

    ### ExtJS 实践大量实例讲解 #### 概述 ExtJS 是一款用于构建现代 Web 应用的强大框架,它提供了一系列丰富的 UI 组件、数据处理功能以及与后端交互的能力。本文将通过大量的实例来讲解如何使用 ExtJS 来开发高...

    ext extjs4学习经典实例 guice mybaits 简单权限 (全量包)更新一

    同时,EXTJS4的布局管理器也更加强大,支持多种布局模式,如fit、border、form等,适应各种页面设计需求。 Guice是Google贡献给开源社区的一个依赖注入框架,它简化了Java对象的生命周期管理。通过使用Guice,...

    extjs4 自己写的webdesktop小实例,更新中

    1. **布局**:ExtJS4提供了多种布局方式,如Fit布局、Border布局、Column布局等,用于合理安排组件的位置和大小。Web桌面一般会使用Border布局,以模拟桌面的四周边界。 2. **桌面图标**:通过ExtJS的Button或Image...

    Extjs fieldset两行两列布局

    ### Extjs FieldSet 两行两列布局解析 在Extjs框架中,`FieldSet`是一种常见的组件,常用于组织一组相关的表单字段,并通过一个标题来标识这组字段的主题。本文将详细介绍如何使用Extjs实现一个两行两列布局的`...

    Extjs折叠布局中添加树

    在这个实例中,我们看到在名为“west”(通常代表左侧)的区域,使用了折叠布局。这个区域的组件是`leftPanel`,它包含了一个`Ext.panel.Panel`,并且配置了`layout: 'accordion'`,表示这是一个折叠面板。折叠布局...

    Extjs源码分析与开发实例宝典

    ExtJS提供了多种布局策略,如边框布局(Border Layout)、卡片布局(Card Layout)等,方便开发者灵活安排页面元素的显示方式。 ### 1.4 ExtJS的开发环境与工具 ExtJS的开发不仅依赖于良好的编码习惯,还需要一...

    实例分析ExtJs

    常见的布局类型有:fit布局(完全填充父容器)、border布局(类似CSS的边框布局)、form布局(用于表单元素)等。 4. **Store与Model**: Store是数据存储的容器,可以与远程服务器进行数据交换,而Model定义了数据...

    ExtJS 4 技术详解,全面解析ExtJS 4

    本文将深入探讨两种ExtJS 4中的布局方式:Accordion布局和Border布局。 首先,我们来看Accordion布局。Accordion布局,又称为手风琴布局,它的特点是只有一个面板处于展开状态,其余面板均折叠。这种布局适用于展示...

    表单布局实例

    在ExtJS中,表单布局(Form Layout)是构建用户界面的重要组成部分,它允许开发者将各种表单元素如文本字段、组合框、复选框等...对于初学者来说,这是一个很好的起点,可以从中学习到ExtJS布局和表单设计的基本概念。

Global site tag (gtag.js) - Google Analytics