当前位置: 代码迷 >> Web前端 >> 动态 平添 fieldSet
  详细解决方案

动态 平添 fieldSet

热度:649   发布时间:2012-11-04 10:42:41.0
动态 添加 fieldSet
XML/HTML代码
//Create the Form    
  testForm = new Ext.form.FormPanel({    
      name: "form1",    
      frame:true,    
      width: 350,    
      items: [{    
          xtype: "textfield",    
          name: "nom",    
          fieldLabel: "nom",    
          allowBlank: false    
      }]            
  });    
  //Render the form    
  testForm.render(Ext.get('idForm'));        
  //Create the fieldset    
  testFieldSet = new Ext.form.FieldSet({    
      name: 'testFieldSet',    
      autoHeight: true,    
      items: [{    
              xtype : "textfield",    
              name : "testtextvalid",    
              fieldLabel: "testDyn",    
              allowBlank: false    
          }]    
  });    
  testForm.add(testFieldSet); //add the fieldset to the formpanel    
   
  testForm.doLayout();    
===========this is the workaround============         
  testFieldSet.form = testForm.getForm();    
  testForm.initFields.call(testFieldSet);    
  //delete testForm.form;原来是有这一行的,但加上后连getForm()都不好用了,去掉就没问题了    
===========this is the workaround============   
OK,一切恢复正常!


=================================================================================================


workaround部分仅对动态增加FieldSet时有用,而如果被添加的FieldSet可以被删除(remove或者destroy)时,校验仍然会产生错误的,此时必须将FieldSet中的每一个Field在BaseForm中remove掉。
代码如下
var f = fieldset.form || fieldset.ownerCt.getForm();
fieldset.items.each(function(item) {
    f.remove(item);
});
fieldset.destroy();