2011-02-07 21 views
5

içinde çoklu sayfa sekme paketi gönder Birden fazla sekmeli form içeren bir form göndermenin bir yolunu arıyorum. Kullanıcı, tüm sekmelerdeki tüm verileri POST tarafından tek bir gönderimde gönderebilmelidir. Asıl sorun, verilerin açık bir şekilde oluşturulmadığı/açılmadığı ve gönderilmediği sırada diğer işlenmemiş sekme formlarını içermediği sürece verilememesidir. :(Extjs, bir Formpanel

Ive yollarını ama nafile içinde arıyordum im yanlış veri bağlama

Numune kodu ile alakası var ise düzelt.?

var fp = new Ext.FormPanel({ 
    renderTo: 'parti2', 
    fileUpload: true, 
    width: 866, 
    frame: true, 
    title: '   ', 
    autoHeight: true, 
    bodyStyle: 'padding: 10px 10px 0 10px;', 
    labelWidth: 130, 
    waitMsgTarget: 'mm_loader', 
    defaults: { 
     anchor: '95%',    
     msgTarget: 'side' 
    }, 
    { 
      /**** tab section ****/ 
      xtype:'tabpanel', 
     plain:true, 
     activeTab: 0, 
      autoHeight:true, 
     defaults:{bodyStyle:'padding:10px'}, 
     items:[{ 
      /**** new tab section ****/ 
      title:'Personal Details', 
      layout:'form', 
      defaults: {width: 230}, 
      defaultType: 'textfield', 
      items:[{ 
       xtype: 'textfield', 
       fieldLabel: 'First Name', 
       name: 'sec2_ab1', 

       },{ 
       xtype: 'textfield', 
       fieldLabel: 'Middle Name', 
       name: 'sec2_ab2', 

       },{ 
       xtype: 'textfield', 
       fieldLabel: 'Last Name', 
       name: 'sec2_ab3', 

       },{ 
       xtype: 'textfield', 
       fieldLabel: 'Nationality', 
       name: 'sec2_ab4' 

      },{ 
       xtype: 'textfield', 
       fieldLabel: 'Height', 
       name: 'sec2_ab13', 

      },{ 
       xtype: 'textfield', 
       fieldLabel: 'Education', 
       name: 'sec2_ab15', 

      }] 
      },{ 
       /**** new tab section ****/ 
      layout:'form', 
       title: 'Contract info', 
      autoHeight:true, 
      defaults: { 
       anchor: '95%', 

       msgTarget: 'side' 
      }, 
      defaultType: 'textfield', 
      items:[ 
       { 
       xtype: 'textfield', 
       fieldLabel: 'Monthly Salary', 
       name: 'section_ab5', 

      },{ 
       xtype: 'textfield', 
       fieldLabel: 'Work span', 
       name: 'section_ab4', 

      },{ 
       xtype: 'fileuploadfield', 
       id: 'form-file', 
       fieldLabel: 'Photo', 
       allowBlank: true, 
       msgTarget: 'side', 
       name: 'anyfile1', 
       buttonCfg: { 
        text: '', 
        iconCls: 'upload-icon' 
       } 
      }] 
      },{ 
       /**** new tab section ****/ 
      title: 'Knowledge of Languages', 
       layout:'form', 
      autoHeight:true, 
      defaults: { 
       anchor: '95%', 

       msgTarget: 'side' 
      }, 
      items:[combo_kl] 
      } ] /**** end tabs ****/ 

     },{ 
      html: ' ', autoHeight:true, border: false, height: 50, defaults: { anchor: '95%' } 
     } 
     ,{ 
      buttons: [{ 
      text: 'Reset Form', 
      handler: function(){ 
       fp.getForm().reset(); 
       } 
      },{ 
     text: 'Submit Form', 
     handler: function(){ 
      if(fp.getForm().isValid()){ 
       fp.getForm().submit({ 
        method:'POST', 
        url: '?handler/save', 
        waitMsg: 'Please wait as the Resume is being Send...', 

        success: function(fp, o){ 
         msg('Success', 'Processed file: "'+o.result.file+'" '); 
        }, 
        fail: function(fp, o) { 
          msg('Fail', 'erronious'); 
        } 
       }); 
      } 
     } 
    }] // button end 
    }] 

}); 
+0

Ben kodunuzu :) ve 'düzeni yeniden: form'' yanlış ve muhtemelen' deferredRender cant'kullanma neden konudur ': Bu doğrudur –

cevap

8

deneyin ekleyerek aşağıdaki senin TabPanel beyanı:

deferredRender: false 

Bu hepsi hemen çocuk bileşenleri var işlemek için TabPanel söyler Şu anda sizin TabPanel yalnızca hangi görünür bileşenleri render edilir. form göndererek sorunlara neden olur.

+0

FALSE! – YajeDev

+1

Bu, form düzenlerimi mahvediyor. Bunun olmasını önlemek için bir yolu var mı? –

+0

@DennisHodapp nasıl demek istiyorsun? Tüm bu seçenek, tabPanel'in tüm sekme içeriklerini sadece görünen sekmede değil, yükte göstermesini söyler. Bunun form düzenine nasıl bulaştığını anlamıyorum. – JamesHalsall

5

Harika! Bu şimdi gayet iyi çalıştı! Teşekkürler! :)

Ben de tamamen ekleyerek, deferredRer olmadan sekme paneli formun parametrelerini göndermek için başka bir yol bulundu:

params: fp.getForm().getFieldValues(true) 

göndermek komuta. :)

fp.getForm().submit({ 
    method: 'POST', 
    url: '?hander/save', 
    waitMsg: 'Please wait for the server response...', 
    params: fp.getForm().getFieldValues(true), 
    success: function (fp, o) { 
     msg('Success', 'Processed file: "' + o.result.file + '" '); 
    }, 
    fail: function (fp, o) { 
     msg('Fail', 'erronious'); 
    } 
});