我有一个包含记录的网格面板,点击它们将被加载到表单面板中进行编辑。
在我们的表单面板“关闭”时,我们调用myForm.getForm.reset(),这似乎重置了记录,但表单字段中的值仍然存在。
// Load record
me.down('form').loadRecord(record);
// Close
me.down('form').getForm().reset() or me.down('form').reset()
请在重置我们的记录时告知如何清除表格中的数值。
答案 0 :(得分:5)
表单中是否有trackResetOnLoad
设置为true?如果是这样,你真正想要的是它被设置为假。
答案 1 :(得分:3)
也许您需要将'resetRecord'参数设置为'reset()'方法,以取消绑定'loadRecord'方法设置的任何记录。
示例:
me.down('form').getForm().reset(true)
答案 2 :(得分:2)
您可以覆盖默认表单面板以添加此功能。将以下内容添加到您的代码中:
Ext.override(Ext.form.Panel, {
clearForm:function(){
Ext.each(this.getForm().getFields().items, function(field){
field.setValue('');
});
}
});
然后您可以使用以下方式清除表单:
myForm.clearForm()
myForm是您的表单面板。
reset()
方法只是将表单重置为最后加载的记录。
答案 3 :(得分:2)
如果你想维持 trackResetOnLoad = true (例如你可以使用表格" dirtychange" event),另一种方法是获取值的副本就像var originalValues = myForm.getFieldValues();
之后创建表单一样,只需使用myForm.setValues(originalValues);
恢复这些值,而不是调用myForm.reset(...);
答案 4 :(得分:-1)
你可以试试这个......
this.up('form').getForm().reset();