您可以將所有面板包裹在一個表單面板中,並提交所有內部字段。我採用這種方式,將accordeons,tabpanel和普通面板深深嵌套在一起。例如:
var form = Ext.create('Ext.form.Panel', {
// form attributes goes here...
// ...
initComponent: function(){
// all your panels goes here.
this.items = [
{
xtype:'panel',
title: 'First panel',
layout: 'anchor',
frame: true,
defaults: {anchor: '100%'},
items: [
{xtype:'textfield', name: 'foo',fieldLabel: 'Foo'},
{xtype:'textfield', name: 'foo',fieldLabel: 'Bar'}
]
},
{
xtype:'panel',
title: 'Second panel',
layout: 'anchor',
frame: true,
defaults: {anchor: '100%'},
items: [
{xtype:'textfield', name: 'baz',fieldLabel: 'Baz'},
{
xtype: 'panel',
items: [/* another set of fields */]
}
]
},
];
this.buttons = [/* ... your buttons here ...*/];
this.callParent(arguments);
}
});
感謝您的回答。我做錯的是,我創建了這些面板作爲隱藏字段的後代(其中包含面板中字段的數據),這就是表單不能識別它們的原因。解決方案是讓隱藏字段將第一個面板(其中包含帶有字段的嵌套面板)添加到窗體面板,而不是使其成爲隱藏字段的成員。 – 2011-06-18 12:25:46