tabpanel 中如何激活 第三个 form(附代码)

creat66 2008-04-16
我在tabpanel中放了3 个 form(fm1,fm2,fm3)在提交第三个form过程中无法得到fm3中的数据,用普通的windows.document.forms.length 得到也是2个form,这是什么原因,有人能帮我解决一下吗?附代码
如下:
var tp =new Ext.TabPanel({
                activeTab: 0,
                width:550,
                height:450,
          name:'tp',
                defaults:{bodyStyle:'padding:10px'},
                xtype:'tabpanel',
                plain:true,
                defaults:{ frame:true},               
                closable:true,
                layoutOnTabChange:true,
                items:[{
                title: '查询1',
                layout:'form',
                cls:'x-plain',           
                items:[
                      fm1
                  ]
               },{
                title: '查询2',
                layout:'form',
                cls:'x-plain',           
                items:[
                      fm2
                  ]
               },{
                title: '查询',
                layout:'form',
                cls:'x-plain',           
                items:[
                      fm3
                  ]
               }]})
             
       

    var win = new Ext.Window({
                el:'hello-win',
                layout:'fit',
                width:550,
                height:450,
                closeAction:'hide',
                plain: true,
                modal:true,
                collapsible: true,
                //draggable: true,
                closable: true,
                items:
                tp,
                buttons: [{
                    text: '关闭',
                    handler: function(){
                        win.destroy();
                    }
                }]
            }
          
            );  
     
creat66 2008-04-16
只有当每个tab都点过,length值才会变成3,否则2
给我的感觉好像是初始forms.length是2,需要激活三个
rbg 2008-05-06
你可以研究下页签的机制:页签展现渲染时,只会初始化渲染你所指定的activeTab这个子页签,其他的页签一律不渲染,所以也就不存在form的dom内容,如果没有指定activeTab页签不会初始化任何子页签,那么所有的form都不会得到渲染;另外,当鼠标点击一个子页签时,ext先判断该子页签是否渲染过,如果没有渲染先渲染该子页签的内容,也就是你的form,如果已经渲染过就直接显示。
知道以上原理,就不难理解你的问题了。
如果想解决这个问题,有两种方法:1、提交页签的form时,判断一下,如果form没有渲染,就让含有该form的子页签显示
2、改造ext页签的代码,使其在页签渲染时不只是初始化渲染activeTab,让它渲染所有的页签
cylix 2008-05-06
楼上正解...
如果你要一出来就渲染出所有的form
tabpanel中有个deferredRender的属性  设置为false就好
rbg 2008-05-06
楼上说的对 deferredRender 这个属性
Global site tag (gtag.js) - Google Analytics