2012-02-20 15 views
12

benim panelde tüm tıklanabilir, düzenlenebilir bileşenleri devre dışı çalışıyorum.ExtJs4 yinelemeli

panel.disable() griler dışarı çağrılması, ancak düğmeleri hala tıklanabilir. Aynı sonuç, her bir bileşeni devre dışı bırakan bir işlevle panel.cascade verir.

Bunu yapmanın doğru yolu nedir?

cevap

22

Eğer 4.x extjs kullanıyorsanız, bu aradığınız budur -

myFormPanel.query('.field, .button').forEach(function(c){c.setDisabled(false);}); 

(Sadece .component kullanabilirsiniz formunuzda karmaşıklığına dayalı seçici değiştirin ve onu.

Ayrıca bkz formunuzda tüm bileşeni) devre dışı bırakır - Eğer 3.x kullanıyorsanız Ext.ComponentQuery

, ikisi de aynı etkiyi elde edebilirsiniz Böyle adımlar - elle form paneline alan kümeleri ve alanları ekleyerek olanlar için

myFormPanel.buttons.forEach(function(btn){btn.setDisabled(true);}); //disable all buttons 
myFormPanel.getForm().items.each(function(itm){itm.setDisabled(true)}); //disable all fields 
+2

[docs] temel alınarak 'c.setDisabled (true)' olmalıdır (http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.AbstractComponent- usul-setDisabled). Elbette Extjs 4.2.1'e başvuruyorum. –

2

kullandığınız varsayarsak bir FormPanel form almak için bu yöntemi kullanabilirsiniz:

getForm() // see http://docs.sencha.com/ext-js/4-0/#!/api/Ext.form.Panel-method-getForm 

Bu Ext.form.Basic nesneyi dönecektir.

getFields() // see http://docs.sencha.com/ext-js/4-0/#!/api/Ext.form.Basic-method-getFields 

Şimdi cou alanında yineleme ve bunları devre dışı bırakabilirsiniz: Buradan yöntemi ile bu formdaki tüm alanları erişebilir. Ayrıca, nesneyi iletebileceğiniz applyToFields() yöntemine de dikkat edin. http://docs.sencha.com/ext-js/4-0/#!/api/Ext.form.Basic-method-applyToFields

İyi şanslar: API bilgilere bakın!

0

, ExtJS() ilk olarak bir getForm yaparak, forma doğrudan bileşenleri eklemenizi gerektirmez. Temel olarak kolaylık sağlamak için ve standart işlevselliğin düzgün çalışmasına izin verir. Bu yüzden, 'add' bileşenini hangi bileşenle yaptıysanız, o bileşenden yineleyin.

Örnek 1:

Normalde dinamik set beri bir bileşen almak için 'kimlik' kullanmamalısınız. Ancak bu, getCmp'i kullanarak form panelini nasıl alabileceğinizi gösterir. yineleme zaman

  var formPanel = Ext.getCmp('id-of-component'); 
      var fieldSet = Ext.create('Ext.form.FieldSet', { 
       title: 'field set'      
      }); 
      formPanel.add(fieldSet); 

, bunu olacaktır:

formPanel.each(function(item) { 
    alert(item.title); 
}); 

Örnek 2: yineleme hafifçe görünüyor Bu örnekte

, biz, gerçek formun kendisine eklemek farklı.

  var formPanel = Ext.getCmp('id-of-component'); 
      var fieldSet = Ext.create('Ext.form.FieldSet', { 
       title: 'field set'      
      }); 
      formPanel.getForm().add(fieldSet); 

iterating, bunu olacaktır:

formPanel.getForm().each(function(item) { 
    alert(item.title); 
}); 
1

Bu form panelinin içindeki tüm form alanları devre dışı bırakarak daha iyi bir çözümdür.

var formPanelName = Ext.ComponentQuery.query('#formPanelId field'); 
for(var i= 0; i < formPanelName.length; i++) { 
    formPanelName[i].setDisabled(true); 
} 

Sadece formu paneli alanlara bir referans olsun. Her alanın üzerinde yineleyin ve readOnly özniteliğini true olarak ayarlamak için setDisabled işlevini kullanın.

Ayrıca bir set daha alabilir ve tüm formu Paneli kapabilirsiniz. Yukarıdaki bu çözüm, form panelinin münferit bölümlerini sadece ID ile yakalar. extjs 4