Search code examples
extjsextjs4extjs4.1toolbar

How to get form on toolbar in gridpanel Extjs


I have tbar in grid panel. My example code like

    tbar:[
            {
                xtype: 'form',
                items: [{
                    xtype: 'filefield',
                    name: 'filefor',
                    labelWidth: 50,
                    allowBlank: false,
                    buttonConfig: {
                        text: 'up...'
                    }
                }]
            }
            ,{
                text: 'add',
                handler:function(){
                        var form = this.up('form').getForm(); // not working
                        form.submit({}); // not working
                }
             }
   ]

I can't get my form to submit. How can i do that thanks so much :).


Solution

  • The form is sibling of the add button. you may want to use .prev instead of .up to access the form

    Here is the snippet that works

    Ext.require([
        'Ext.form.*',
        'Ext.tip.*']);
    
    Ext.onReady(function () {
    
        Ext.QuickTips.init();
        var f = Ext.create('Ext.form.Panel', {
            renderTo: Ext.getBody(),
            bodyStyle: 'padding: 5px 5px 0 5px;',
            defaults: {
                xtype: 'textfield',
                anchor: '100%',
            },
            html:'text',
            tbar: [{
                xtype: 'form',
                items: [{
                    xtype: 'filefield',
                    name: 'filefor',
                    labelWidth: 50,
                    allowBlank: false,
                    buttonConfig: {
                        text: 'up...'
                    }
                }]
            }, {
                text: 'add',
                handler: function () {
                  //var form = this.prev('form').getForm(); // working at extjs4.0.2a
                   var form =this.ownerCt.down('form').getForm();// working at extjs 4.2.0
                   form.submit({});
                }
            }]
    
        });
    });
    

    For a live demo, here it is the jsfiddle link .