2

我有一个 Grid 面板,其中包含记录,单击时将加载到 Form 面板中进行编辑。

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

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

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

4

5 回答 5

6

您是否已将trackResetOnLoad表单设置为 true?如果是这样,您真正想要的是将其设置为 false。

于 2013-09-24T19:14:34.040 回答
3

也许您需要将 'resetRecord' 参数设置为 'reset()' 方法以取消绑定由 'loadRecord' 方法设置的任何记录。

例子:

me.down('form').getForm().reset(true)
于 2013-09-25T03:38:06.967 回答
2

如果您想保持trackResetOnLoad=true(例如,您可以使用表单的“dirtychange”事件),另一种方法是在创建表单后获取值的副本,然后只需使用而不是调用var originalValues = myForm.getFieldValues();来恢复这些值myForm.setValues(originalValues);myForm.reset(...);

于 2015-03-27T21:54:59.637 回答
2

您可以覆盖默认表单面板以添加此功能。将以下内容添加到您的代码中:

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

然后,您可以使用以下方法清除表单:

myForm.clearForm()

myForm 是您的表单面板。

reset()方法只是将表单重置回加载的最后一条记录。

于 2013-10-30T11:55:00.967 回答
-1

你可以试试这个...

this.up('form').getForm().reset();
于 2014-07-09T13:50:15.403 回答