获取通过按钮点击动态创建的`formpanel`的Extjs

时间:2010-05-15 12:05:38

标签: javascript extjs

我有ExtJS View-Port panel,其中包含center面板,其中包含tablpanel,其中我在一个标签中添加了gridpanel,我有将Add Person按钮放在tbar中,这将在其重置按钮中添加formpanel的新标签,我无法访问表单以重置它。

是否有任何机构遇到同样的问题?

请帮助如何让它发挥作用。

Ext.onReady(function() {
    // Ext.get(document.body, true).toggleClass('xtheme-gray');
    var myBorderPanel = new Ext.Viewport({
        title: 'Software Releases',
        // renderTo: document.body,
        renderTo: Ext.getBody(),
        layout: 'border',

        id: 'main',

        items: [{
            title: 'Center Region',
            region: 'center', // center region is required, no width/height specified

            tbar: [{
                text: 'Add person', // only when user have write priovilege.
                handler: function() {
                    var tabpanel = Ext.getCmp('main').findById('tabs');

                    var wtab = tabpanel.add({
                        //     // var addrelease_win = new Ext.Window({
                        url: 'reledit-submit.json',
                        id: 'addform0',
                        // height: 300, width: 400,
                        layout: 'form',
                        frame: true,
                        title: 'Add New Release',
                        closable: true,

                        items: [{
                            xtype: 'textfield',
                            fieldLabel: 'Name'
                        }],


                        buttons: [{
                            text: 'Save',
                            scope: wtab,
                            handler: function() {
                                wtab.getForm().submit({
                                    success: function(f, a) {
                                        Ext.Msg.alert('Success', 'It worked');
                                    },
                                    failure: function(f, a) {
                                        Ext.msg.alert('Warnning', 'Error');
                                    }
                                });
                            }
                        }, {
                            text: 'Reset',
                            scope: wtab,
                            handler: function() {
                                // Ext.getCmp('addform0').getForm().reset();
                                // tabpanel.getActiveTab.reset();
                                // Ext.getCmp('main').findById('addform').getForm().reset();
                                // this.getForm().reset();
                                // this.getForm().reset();
                                // Ext.Msg.alert('sdfsd', 'asdfsd ' + Ext.getCmp('addform0').getValue() + ' sdfsd');
                                this.findById('addform0').getForm().reset();
                                // Ext.Msg.alert('sdfsd', 'asdfsd ');
                            }
                        }]
                    });
                    // addrelease_win.show();

                    tabpanel.activate(tabpanel.items.length - 1);
                }
            }],
            xtype: 'tabpanel',

            id: 'tabs',

            activeTab: 0,

            items: [{
                title: 'Data',
                xtype: 'editorgrid',
                store: store,
                stripeRows: true,
                // autoExpandColumn: 'title',
                columns: [{
                    header: "Name",
                    dataIndex: "name",
                    width: 50,
                    sortable: true
                }, {
                    header: "DOB",
                    dataIndex: "dob",
                    sortable: true
                }]
            }],
            margins: '5 5 0 0',
        })
    })
});

1 个答案:

答案 0 :(得分:3)

wtab.getForm().reset();不起作用吗?

如果没有,请使用this.ownerCt进入按钮容器,然后沿链向上走,直至到达可以访问表单的位置。

<强>更新

真正的问题是它的Panel是一个创建的表单布局,而不是FormsPanel。

layout:'form'更改为xtype:'form'并且.getForm()应该有效。