Extjs无法动态添加/删除formpanel中的字段

pm1*_*m13 7 forms extjs extjs3

我有一个表单面板,使用表格布局来显示表单.我需要添加功能来添加/删除一组组件.

添加按钮应在现有元素下添加新的组件行,删除按钮应删除最后添加的行.

formpanel可以添加一个新字段,但它出现在按钮下方,表单的宽度不会增加(参见下面的屏幕截图).我已经尝试了插入和添加功能,但两者都有相同的效果.

有谁知道如何:1)我可以在下一行添加一系列组件?2)我如何删除下一行.

部分formPanel代码和按钮代码:

![SearchForm = Ext.extend(Ext.FormPanel, {
     id: 'myForm'
     ,title: 'Search Form'
     ,frame:true     
     ,waitMessage: 'Please wait.'
     //,labelWidth:80    
     ,initComponent: function() {    
         var config = {                 
            items: [{
                layout:{
                    type:'table',
                    columns:5
                },
                buttonAlign:'center',

                defaults:{
                    //width:150,
                    //bodyStyle:'padding:100px'
                    style:'margin-left:20px;'
                },               
                items:[//row 1
                       {                    
                            xtype: 'label',
                            name: 'dateLabel',
                            cls: 'f',
                            text: "Required:"                   
                        },
                        {
                            xtype: 'container',
                            layout: 'form',
                            items: {
                                xtype: 'datefield',
                                fieldLabel: "From Date",  
                                 value: yesterday,
                                width: 110,
                                id: 'date1'                                                   
                            }
                        }][1]
buttons: [{
                            text: 'Add More Criteria (max 10 items)',
                            id: "addBtn",                   
                            scope: this,
                            handler: function(){
                                alert('hi');
                                /*this.items.add({
                                     xtype : 'textfield',
                                     fieldLabel : 'Extra Field',
                                     name : 'yourName',
                                     id : 'yourName'
                                 }); */
                                this.insert(4,{
                                        xtype: 'textfield',
                                        id: 'input20',
                                        //hideLabel: true,
                                        width: 180,
                                        fieldLabel: 'hi'
                                    });
                                this.doLayout();
                            }
                }
Run Code Online (Sandbox Code Playgroud)

形成

Amo*_*are 5

最简单的方法是将有一个字段集的形式来保存所有"行",然后将行添加到该fieldsetfielset.add()

(您的'行'可以是包含所有字段的另一个字段集)