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



 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值