2010-10-06 95 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++; 
}