重置表单记录不清除值 - ExtJS 4.2

时间:2013-09-24 17:58:13

标签: extjs extjs4

我有一个包含记录的网格面板,点击它们将被加载到表单面板中进行编辑。

在我们的表单面板“关闭”时,我们调用myForm.getForm.reset(),这似乎重置了记录,但表单字段中的值仍然存在。

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

请在重置我们的记录时告知如何清除表格中的数值。

5 个答案:

答案 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();