2010-10-06 73 views
2

我有一个FormPanel,并在创建时添加了一个复选框树。现在我想更改面板内所有复选框的通用名称模式。根据DOM名称被正确地更改,但是当我提交表单时仍旧提交旧名称。尝试调用.doLayout但没有任何运气。有任何想法吗?ExtJS FormPanel更改元素名称

changePredicateName: function (panel, predicateName) { 
    var ref = this; 
    this.counter = 0; 
    panel.cascade(function (o) { 
     var name = ref.groupId + "." + predicateName + "." + ref.counter + "_value"; 
     if (o instanceofnExt.form.Checkbox) { 
      o.name = name; 
      ref.counter++; 
     } else if (o.titleCheckbox) { 
      o.titleCheckbox.name = name; 
      ref.counter++; 
     } 
     return true; 
    }); 
    panel.doLayout(); 
}, 

回答

0

doLayout只调整大小/重新排列对象;它不会更改诸如元素名称之类的属性。为了更改您创建的元素的名称,您需要执行如下的一些DOM操作(假设o是Ext.Element):

if (o instanceofnExt.form.Checkbox) { 
    o.name = name; 
    o.set({ name: name }); 
    ref.counter++; 
} else if (o.titleCheckbox) { 
    o.titleCheckbox.name = name; 
    o.titleCheckbox.set({ name: name }); 
    ref.counter++; 
}