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 这个属性
|