重置表单记录不清除值-ExtJS 4.2
我有一个网格面板,其中包含记录,单击后将加载到表单面板中进行编辑 在表单面板的“close”上,我们调用myForm.getForm.reset(),它似乎重置了记录,但表单字段中的值本身仍然存在重置表单记录不清除值-ExtJS 4.2,extjs,extjs4,Extjs,Extjs4,我有一个网格面板,其中包含记录,单击后将加载到表单面板中进行编辑 在表单面板的“close”上,我们调用myForm.getForm.reset(),它似乎重置了记录,但表单字段中的值本身仍然存在 // Load record me.down('form').loadRecord(record); // Close me.down('form').getForm().reset() or me.down('form').reset() 请告知如何在重置记录时清除表单中的值。是否将表单的trac
// Load record
me.down('form').loadRecord(record);
// Close
me.down('form').getForm().reset() or me.down('form').reset()
请告知如何在重置记录时清除表单中的值。是否将表单的
trackResetOnLoad
设置为true?如果是这样,您真正想要的是将其设置为false。可能需要将“resetRecord”参数设置为“reset()”方法,以便通过“loadRecord”方法解除任何记录集的绑定
例如:
me.down('form').getForm().reset(true)
您可以覆盖默认表单面板以添加此功能。将以下内容添加到代码中:
Ext.override(Ext.form.Panel, {
clearForm:function(){
Ext.each(this.getForm().getFields().items, function(field){
field.setValue('');
});
}
});
然后,您可以使用以下命令清除表单:
myForm.clearForm()
其中myForm是您的表单面板
reset()
this.up('form').getForm().reset();
如果要维护trackResetOnLoad=true(例如,您可以使用表单的“dirtychange”事件),另一种方法是在创建表单后立即复制值,如var originalValues=myForm.getFieldValues()然后使用myForm.setValues(originalValues)简单地恢复这些值代码>而不是调用myForm.reset(…)代码>trackResetOnLoad:false。。从trackResetOnLoad更改为:true。。工作!如果将trackResetOnLoad
设置为false,则不会触发dirtychange事件。如果需要的话,请考虑其中一个解决方案。这与重置表单(至少以OP的方式)不一样。通过将所有字段设置为null,如果用户保存表单,则上一条记录将更新为null值。雷米乌斯的答案是正确的。@Reimius-可能是因为它代表了投票人的正确答案。答案可以被证明是有价值的,原因有很多,并且都可以在有效性、效益和观点方面进行投票——事实上,请参见格伦·劳伦斯的评论为什么会有这样一个立体文本?