extjs4.2 中Viewport动态添加或删除panel中的items

显示的viewport

 var viewPort =  new Ext.Viewport({
	   id:'mainView',
           layout : "border",  
           items : [{  
		    	    xtype: 'panel',
		   	     // title: 'Bottom Inner Panel',
		   	     width: '50%',
		   	     region:'west',//指定子面板所在区域
		   	     height: document.documentElement.clientHeight,
		   	     items:[ShxpGrid]
   	 		}, {
   	 		     id:'treePanel',
	   	 	     xtype: 'panel',
	   		     // title: 'Bottom Inner Panel',
	   		     width: '50%',
	   		     region:  'center',
	   		     height: document.documentElement.clientHeight,
                 	     containerScroll : true,  
                	     items: [tree],
                             rootVisible: false,//是否显示根节点,
               		     layout:"fit"
                
		        }
      		    ]
   });

现在我想通过一个事件将id为treePanel中的items替换掉,步骤如下:

1.添加监听事件

  listeners: {
                                 select:function(rowModel,record){//获取选中行的数据
                                 var obj = rowModel.getLastSelected().data;
                                 var key = "SYSTEMID";
                                 //alert(obj[key]);
                                 Ext.getCmp('treePanel').removeAll();//删除treePanel
                                 systemId = obj[key];
                                 changeMenu(systemId);//通过方法进行替换
                                                               
                             }

2.我做的是权限树的删除替换

function changeMenu(systemId){
	   var newtree = Ext.create("Ext.panel.Panel", {
	        height : '100%',//设置高度
	        region : 'north',
	        border:false,
	        layout : {
	            type : 'accordion',
	            titleCollapse : false,//允许通过点击标题栏的任意位置来展开/收缩子项Panel
	            animate : true,// 动画切换效果
	            activeOnTop : false
	        // 折叠展开是否改变菜单顺序
	        },
	        layoutConfig : {
	            animate : true
	        },
	        split : true
	    });
	
	  Ext.Ajax.request({//向服务端发送ajax请求
		  url:ctx+'/right/getUserRightCheckboxList',//请求地址
		     waitMsg: '正在加载权限菜单. ...',
		     method : 'post',
			 params : {systemid : systemId },
         success : function(response) {
             var json = Ext.JSON.decode(response.responseText);//获取返回的文本并解析为json格式。Ext.JSON.decode(..):解码(解析)JSON字符串对象。
             if(json.code == 'OK'){
           	  newtree.getEl().unmask();
                 Ext.each(json.data, function(el) {//迭代一个数组或是可迭代的值,在每个元素上调用给定的回调函数 
                	 var panel = Ext.create('Ext.panel.Panel', {//创建一个Panel
                                     id : el.id,//定义id
                                     title : "权限配置",//定义标题
                                     iconCls:el.iconCls,//定义图标
                                     layout : 'fit'//定义布局。fit:当容器只包含一个子元素时, 子元素自动填满容器
                     });
                     panel.add(buildTree(el));//当前Panel添加由此节点的子节点所创建的树面板
                     newtree.add(panel);//tree(1个Panel)添加当前Panel
                 									});
             					   }else{
											 	 Ext.Msg.alert('加载失败', respText.message+"("+respText.code+")");
											 }
        },
	      failure : function(request) {
	             tree.getEl().unmask();
	              Ext.MessageBox.show({
	                 title : '操作提示',
	                 msg : "连接服务器失败",
	                 buttons : Ext.MessageBox.OK,
	                 icon : Ext.MessageBox.ERROR
	                               	});
	                    				 },
	              		});
				  Ext.getCmp('treePanel').add(newtree);
			 }
这样将newtree放到方法中,全台就不会报错了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟进军大神陆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值