2013-09-24 58 views
2

我有一個網格面板,包含記錄,點擊後,將被加載到表單面板進行編輯。重置表格記錄不清除值 - ExtJS 4.2

在我們的表單面板的「關閉」處,我們調用myForm.getForm.reset(),它似乎重置了記錄,但表單字段中的值本身仍然存在。

// Load record 
me.down('form').loadRecord(record); 
// Close 
me.down('form').getForm().reset() or me.down('form').reset() 

請注意如何在重置我們的記錄時清除表格中的值。

回答

5

您是否已將trackResetOnLoad設置爲true?如果是這樣,你真正想要的是設置爲false。

+0

trackResetOnLoad:false ..從trackResetOnLoad更改:true ..工作! – MacGyver

+1

如果將'trackResetOnLoad'設置爲** false ** ** dirtychange **事件未觸發。如果您需要這樣做,請考慮其他解決方案之一。 –

3

也許您需要將'resetRecord'參數設置爲'reset()'方法來解除由'loadRecord'方法設置的任何記錄。

例子:

me.down('form').getForm().reset(true) 
2

您可以覆蓋默認的形式面板添加此功能。以下內容添加到您的代碼:

Ext.override(Ext.form.Panel, { 
    clearForm:function(){ 
     Ext.each(this.getForm().getFields().items, function(field){ 
       field.setValue(''); 
     }); 
    } 
}); 

然後,您可以使用清除表單:

myForm.clearForm()

哪裏myForm位於表單面板。

reset()方法只是將表單重置爲加載的最後一條記錄。

+1

這與重置表單不同(至少在OP的方式中)。通過將所有字段設置爲空,如果用戶保存表單,則以前的記錄將更新爲空值。 Reimius的回答是正確的。 – slashwhatever

+0

這是如何有這麼多upvotes?詹拉是正確的。 – Reimius

+0

@Reimius--可能是因爲它代表了投票人的正確答案。答案可以由於各種原因而證明是有利的,並且可以在有效性,利益和意見方面被投票 - 實際上可以看到Glenn Lawrence的評論 – SW4

-1

你可以試試這個...

this.up('form').getForm().reset(); 
+0

爲什麼這樣的** CUBITAL **文本? –

1

如果你想保持trackResetOnLoad =真(例如,所以你可以使用窗體的「dirtychange」事件),另一種方法是採取的副本值創建後就像var originalValues = myForm.getFieldValues();然後簡單地使用myForm.setValues(originalValues);而不是調用myForm.reset(...);