ExtJs传值问题

ExtJs中如何将一个panel中的值传到另一个panel中去?最好有个Demo例子。

3个回答

[code="java"]
Ext.onReady(function() {
var panel1 = new Ext.Panel({
id:'panel1',
renderTo : 'panel-1',
title: 'Panel 1',
border:false,
layout:'border',
tbar : [
{text : 'Open Panel 2' , handler : function() {
var panel2 = new Ext.Panel({
id:'panel2',
title: 'Panel 2',
border:false,
layout:'border',
html : 'Panel 2',
panelCaller : panel1 ,//把在panel2内需要获取的panel设置到这里
listeners : {
//这里做个测试,看看能不能取得panel-1的title
afterrender : function(cmp) {
Ext.Msg.alert('Status', 'The title [' + cmp.panelCaller.title + '] is retrieved from panel 1 successfully.');
}
}
});

                    panel2.render('panel-2');
                }}
            ]
        });


    });

[/code]
这个是我简单写的一个例子,第一个panel点击按钮,显示第二个panel,第二个panel内显示第一个的title。
如果你要运行,在页面内增加:
[code="java"]

[/code]

你要获取其他数据也可以采用类似的做法。

panel中的值,具体指什么呢?传值肯定要通过什么动作或者事件来触发,这些都需要你描述清楚,不然怎么解决问题呢!

第一个办法就是,在panel上都定义“id”属性,这样在你需要的地方通过
[code="java"]Ext.getComp()[/code]
直接获取相应组件,那么自然你可以获取到组件内的任何属性和值。
第二个办法,在第一个panel打开第二个panel时,通过设置属性的方式,把第一个panel的引用绑定第二个上面,那么第二个panel内部可以直接使用该属性值来获取第一个panel的任何数据:
//假设下面是第一个panel里点击后打开第二个panel
[code="java"]
//panel1为第一个Panel的引用
Panel panel2 = new Panel({callerPanel : panel1 , title : 'some title'});

//在panel2内你可以直接使用
this.callerPanel访问第一个Panel
[/code]

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!