Extjs получает `formpanel`, который создается динамически от нажатия кнопки - PullRequest
2 голосов
/ 15 мая 2010

У меня есть ExtJS View-Port panel, который содержит center панель, которая содержит tablpanel, в которую я добавил gridpanel в одну вкладку, для этого я положил кнопку Add Person в тбар , которая добавит новую вкладку 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 Ответ

3 голосов
/ 15 мая 2010

Не wtab.getForm().reset(); не работает?

Если нет, используйте this.ownerCt, чтобы добраться до контейнера кнопок, а затем просто поднимайтесь по цепочке, пока не дойдете до точки, где вы сможете получить доступ к форме.

UPDATE

Реальная проблема заключается в том, что создается панель с макетом формы, а не FormsPanel.

Измените layout:'form' на xtype:'form', и .getForm () должна работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...