0 0

动态改变panel 中items内容10

例如:var panel1=new Ext.panel({
           id:'123',
           html'123'
      });
var panel3=new Ext.panel({
           id:'789',
           html'789'
      });

var tab=new Ext.TabPanel({
    activeTab:0,
    region:'center',
    items: [
              {
        title: 'test',
        border:false,
        layout:'border',
        items:[panel3]
       },
      {
        title: 'test',
        border:false,
        layout:'border',
        items:[panel1]
       }
              ]
};
var panel2=new Ext.panel({
           id:'456',
           html'456'
      });
怎么让动态改变第二个tab页显示panel2?  至于网上说得 先remove 在add 最后调用doLayout(true)只是把panel1移除了,panel2没有显示出来。  就大侠们指点。

问题补充:
myali88 写道
引用
怎么让动态改变第二个tab页显示panel2?

这是什么意思?Ext.TabPanel默认不就是可以在多个组件之间切换吗?你是指直接替换tab内的组件吗?



是的  直接替换tab内的组件

问题补充:
renpeng301 写道
tab页签用了border布局
border布局必须提供
region:'center', 把panel2加上这个试试····

var panel2=new Ext.panel({ 
           id:'456', 
     region:'center',
           html'456' 
      }); 



发这个问题的时候漏掉了,我这个随手写的一个问题。  项目里面是有的。

问题补充:非常感谢您的回答  差不多就是你的意思。 我在稍微表述清楚一点 麻烦您指点一下
var panel1=new Ext.Panel({
id:'panel1',
title: '树状',
        border:false,
        layout:'border',
        items:[data1]
});
var panel2=new Ext.Panel({
id:'panel2',
title: '待审核',
        border:false,
        layout:'border',
        items:[data2]
});
var panel3=new Ext.Panel({
id:'panel3',
title: '自定义',
        border:false,
        layout:'border',
        items:[data3]
});
var tab = new Ext.TabPanel({
    activeTab:0,
    region:'center',
    items: [
    panel1,
    panel2,
    panel3
    ]
});

panel2.on('activate' , function(panel) {
这里面想改变data2 然后在panel2显示修改后的data2。
});
panel3.on('activate' , function(panel) {
这里面想改变data3 然后在panel3显示修改后的data3。
});

myali88 写道
Ext.onReady(function() {
    		var panel1 = new Ext.Panel({
    			title : 'Tab 1' ,
           		id : '123',
           		html : '123'
      		});
      		
      		var panel2 = new Ext.Panel({
	      		title : 'Tab 2' ,
           		id : '456',
           		html : '456'
      		}); 

      		
			var panel3 = new Ext.Panel({
				title : 'Tab 3' ,
           		id : '789',
           		html : '789'
      		});
      		
      		var test = new Ext.Panel({
				title: 'test2',
				border:false,
				items:[panel1]
		    });   

			var tab = new Ext.TabPanel({
				renderTo : 'tab' ,
				activeTab : 0,
				items : [
					{
						title: 'test1',
						border:false,
						items:[panel3]
					},
				    test
				]
			});
			
			test.on('activate' , function(panel) {
				this.removeAll();
				this.add(panel2);
		
				this.doLayout(true);
				
			});
    	});

是不是这么个意思?


问题补充:
myali88 写道
panel2.on('activate' , function(panel) {
				//这里面想改变data2 然后在panel2显示修改后的data2。
				this.removeAll();
				this.add(newdata2);//newdata2,依据修改需要新建的data2
				this.doLayout();
			});
			panel3.on('activate' , function(panel) {
				//	这里面想改变data3 然后在panel3显示修改后的data3。
				this.removeAll();
				this.add(newdata3);//newdata3,依据修改需要新建的data3
				this.doLayout();
			}); 

这样就可以了。panel2,和panel3只有一个item,直接删除然后再添加一个,这样就算修改了data2了。


panel没有removeAll()方法,我用remove(data3);this.add(newdata3);或者this.items.add(newdata3); this.doLayout();  panel3里面出现空白 说明data3移除成功  newdata3添加没有显示出来 不知道原因在哪?

问题补充:
myali88 写道
引用

panel没有removeAll()方法,我用remove(data3);this.add(newdata3);或者this.items.add(newdata3); this.doLayout();  panel3里面出现空白 说明data3移除成功  newdata3添加没有显示出来 不知道原因在哪?

removeAll方法是有的,你可以在API文档中找到。删除后显示不出来,我估计是因为你这里使用了border布局,这种布局要求center部分组件一定要有,如果你删除了就不行(我试过了,如果把panel2换成默认布局就可以)。这里我建议你试试其他布局方式。



已经解决了 谢谢你的帮助   removeAll在我的2.02版本中是没有的 2.2的API里面也找不到。
2011年8月09日 19:54

8个答案 按时间排序 按投票排序

0 0

采纳的答案

引用

panel没有removeAll()方法,我用remove(data3);this.add(newdata3);或者this.items.add(newdata3); this.doLayout();  panel3里面出现空白 说明data3移除成功  newdata3添加没有显示出来 不知道原因在哪?

removeAll方法是有的,你可以在API文档中找到。删除后显示不出来,我估计是因为你这里使用了border布局,这种布局要求center部分组件一定要有,如果你删除了就不行(我试过了,如果把panel2换成默认布局就可以)。这里我建议你试试其他布局方式。

2011年8月10日 11:14
0 0

panel  有 hide()方法

2011年8月10日 11:29
0 0

panel有removeAll方法,我试了可以的、
removeAll( Boolean autoDestroy ) : Array 
从此容器中移除某个组件。Removes all components ... 
从此容器中移除某个组件。Removes all components from this container. 
参数项: 
autoDestroy : Boolean 
(可选的) True表示为自动执行组件Ext.Componentdestroy 的函数。(optional) True to automatically invoke the removed Component's Ext.Componentdestroy function. Defaults to the value of this Container's autoDestroy config. 
返回值: 
Array 
被销毁的组件数组。Array of the destroyed components 

2011年8月10日 10:50
0 0


panel2.on('activate' , function(panel) { 
//这里面想改变data2 然后在panel2显示修改后的data2。 
if(!this.get(newdate2))
{
this.removeAll();
this.add(newdata2);
this.doLayout();  
}
}); 
panel3.on('activate' , function(panel) { 
//这里面想改变data3 然后在panel3显示修改后的data3。 
if(!this.get(newdate3))
{
this.removeAll();
this.add(newdata3);
this.doLayout();  
}
}); 

2011年8月10日 10:32
0 0

panel2.on('activate' , function(panel) {
				//这里面想改变data2 然后在panel2显示修改后的data2。
				this.removeAll();
				this.add(newdata2);//newdata2,依据修改需要新建的data2
				this.doLayout();
			});
			panel3.on('activate' , function(panel) {
				//	这里面想改变data3 然后在panel3显示修改后的data3。
				this.removeAll();
				this.add(newdata3);//newdata3,依据修改需要新建的data3
				this.doLayout();
			}); 

这样就可以了。panel2,和panel3只有一个item,直接删除然后再添加一个,这样就算修改了data2了。

2011年8月10日 10:17
0 0

Ext.onReady(function() {
    		var panel1 = new Ext.Panel({
    			title : 'Tab 1' ,
           		id : '123',
           		html : '123'
      		});
      		
      		var panel2 = new Ext.Panel({
	      		title : 'Tab 2' ,
           		id : '456',
           		html : '456'
      		}); 

      		
			var panel3 = new Ext.Panel({
				title : 'Tab 3' ,
           		id : '789',
           		html : '789'
      		});
      		
      		var test = new Ext.Panel({
				title: 'test2',
				border:false,
				items:[panel1]
		    });   

			var tab = new Ext.TabPanel({
				renderTo : 'tab' ,
				activeTab : 0,
				items : [
					{
						title: 'test1',
						border:false,
						items:[panel3]
					},
				    test
				]
			});
			
			test.on('activate' , function(panel) {
				this.removeAll();
				this.add(panel2);
		
				this.doLayout(true);
				
			});
    	});

是不是这么个意思?

2011年8月09日 21:31
0 0

引用
怎么让动态改变第二个tab页显示panel2?

这是什么意思?Ext.TabPanel默认不就是可以在多个组件之间切换吗?你是指直接替换tab内的组件吗?

2011年8月09日 21:02
0 0

tab页签用了border布局
border布局必须提供
region:'center', 把panel2加上这个试试····

var panel2=new Ext.panel({ 
           id:'456', 
     region:'center',
           html'456' 
      }); 

2011年8月09日 20:28

相关推荐

    WPF自定义VirtualizingPanel,实现界面动态布局

    2. **`ListBox` 配置**:在 XAML 文件中,将 `ListBox` 的 `ItemsPanel` 设置为 `DynamicGridLayout` 实例。 3. **数据绑定**:将数据源绑定到 `ListBox`,并可能通过属性指定布局模式。 4. **事件处理**:监听窗口...

    Silverlight中Accordion组件动态生成示例

    以下是一些关于如何在Silverlight 4中使用Accordion组件动态生成内容的关键知识点: 1. **组件引入**:首先,你需要在项目中引用System.Windows.Controls.Toolkit库,这个库包含了Accordion组件。通过添加引用,你...

    ext Panel+toolbar+button 实作带注释

    4. 修改代码,尝试添加新的按钮或改变现有组件的属性,观察界面的变化,加深对EXT JS组件的理解。 EXT JS的Panel、Toolbar和Button是构建复杂用户界面的基础元素,掌握它们的使用方法对于开发EXT JS应用至关重要。...

    panel_public.rar_The Call

    5. **C语言编程**:理解C语言的基本语法、数据类型、控制结构、指针和内存管理是理解和修改"panel_public.c"的关键。 6. **错误处理**:在调用函数时,必须考虑错误条件,如参数错误、资源不足等,确保程序的健壮性...

    C# 动态加载pictureBox

    在C#编程中,动态加载是一项关键特性,它允许程序在运行时根据需要加载和使用资源,如控件、类库或数据。本教程将详细讲解如何动态加载pictureBox控件到listView控件中,这对于创建灵活且可扩展的用户界面(UI)尤其...

    ExtJs 动态添加表单

    在"动态添加表单"这个主题中,我们将深入探讨如何在ExtJS中实现表单的动态创建和管理。 首先,我们要理解表单(Form)在ExtJS中的基本概念。表单是数据输入和验证的核心组件,可以包含各种字段类型,如文本框、下拉...

    【ASP.NET编程知识】浅析Repeater控件的使用 (原样导出和动态显示隐藏Repeater中的列).docx

    7. **动态变更列信息**:通过修改HeaderTemplate、ItemTemplate和FooterTemplate的内容,可以在运行时改变列的信息。 8. **选择项目的获取**:在ItemCommand事件中处理用户的选择,注意在Repeater中事件触发可能需要...

    WPF 走马灯特效

    描述中提到的“支持颜色修改”,在WPF中,我们不仅可以通过`Foreground`属性改变文本颜色,还可以通过`Brush`对象动态改变背景色,创建更丰富的视觉效果。 滚动方向的控制是走马灯特效的另一重要特性。这通常通过`...

    EXTJS动态树的实现

    EXTJS动态树是一种基于JavaScript的UI组件,用于在网页中构建可交互的树形结构数据展示。EXTJS是一个强大的前端框架,提供了丰富的组件库,包括表格、表单、树、图表等多种元素,使得开发者能够创建出功能丰富且用户...

    windows phone 中通过类绑定数据

    综上所述,通过类绑定数据,我们可以高效地在Windows Phone应用中创建动态的Canvas,展示Image和TextBlock,并实现上下翻页功能。这种方式不仅简化了代码,提高了可维护性,还使UI与数据模型之间保持了良好的解耦。...

    ASP-net程序设计实验报告四.doc

    在ASP.NET程序设计中,服务器控件是构建动态Web应用程序的关键元素。本次实验旨在深入理解和熟练掌握ASP.NET服务器控件的使用,包括用户控件的创建、属性、事件和方法的定义与应用,以及常见控件的功能实现。 ...

    extjs4.0学习笔记

    6. **动态添加和修改Items**:可以使用`add`方法向容器如Panel中动态添加组件。例如,`a.add(item1); a.add(item2);`。 7. **提示系统**:为了实现动态提示,需要调用`Ext.tip.QuickTipManager.init();`初始化快速...

    Extjs4.2 根据不同的数值设置tabpanel行的背景颜色

    在本例中,我们将重点介绍如何在TabPanel中的GridPanel(表格面板)中根据不同条件动态改变行的背景颜色。 #### 三、实现步骤 ##### 1. 在样式文件中添加样式 首先,我们需要定义CSS样式规则来指定不同数值对应的...

    自定义实现StackPanel

    首先,了解`WPF`中的`Panel`类。`Panel`是所有布局容器的基类,负责计算和布置其子元素的位置。`StackPanel`继承自`Panel`,默认按照指定的`Orientation`(水平或垂直)方向顺序排列子元素。 **自定义Panel过程:**...

    EXT弹出框改装实现

    4. **动态加载内容**:窗口可以动态加载远程数据,通过Ajax请求或者Store与服务器进行通信。这在创建动态、数据驱动的窗口时非常有用。 5. **模态窗口**:如果希望弹出框在显示时阻止用户对其他元素的交互,可以...

    VirtualizingPPanel.zip

    然后,在XAML中定义一个ItemsControl,并设置其ItemsPanel属性为VirtualizingWrapPanel。例如: ```xml <ItemsControl.ItemsPanel> </ItemsControl.ItemsPanel> ``` 在这里,MyItems是数据源,...

    Winform折叠菜单

    例如,可以使用Panel控件配合Button控件,通过按钮的Click事件改变Panel的Dock属性来实现展开和折叠的效果。 四、Winform菜单的添加基础 1. 创建MenuStrip控件:在设计界面中,从工具箱拖动MenuStrip控件到窗体上。...

    WPF中checkbox使用

    本教程将深入探讨如何在WPF中利用Canvas控件结合数据绑定,以Checkbox的形式动态展示数据。 首先,我们需要理解WPF中的Canvas。Canvas是一个布局容器,允许开发者通过设置子元素的Left、Top、Right和Bottom属性来...

    EXTjs组件.pdf

    使用xtype配置时,子组件不会立即实例化,而是在需要时由容器动态创建,如TabPanel中的选项卡页面,仅在用户切换到对应页面时才进行渲染,这样可以优化性能。 组件还支持显示和隐藏操作,EXTJS提供了show和hide方法...

    发一个比较漂亮的选项卡动态增删的效果

    2. **添加选项卡项**:通过`addItem`方法向`ItemsPanel`对象中添加新的选项卡项。该方法接收四个参数,分别是选项卡ID、标题、对应的URL以及是否作为首页(不可关闭)。 ```javascript itemsPanel.addItem(...

Global site tag (gtag.js) - Google Analytics