【问题标题】:Reset Form Record Not Clearing Values - ExtJS 4.2重置表单记录不清除值 - ExtJS 4.2
【发布时间】:2015-03-30 06:23:35
【问题描述】:

我有一个 Grid 面板,其中包含记录,点击后会加载到表单面板中进行编辑。

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

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

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

【问题讨论】:

    标签: extjs extjs4


    【解决方案1】:

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

    【讨论】:

    • trackResetOnLoad: false .. 由 trackResetOnLoad: true .. 改变!
    • 如果您将 trackResetOnLoad 设置为 false,则不会触发 dirtychange 事件。如果需要,请考虑使用其他解决方案之一。
    【解决方案2】:

    也许你需要在 'reset()' 方法中设置 'resetRecord' 参数来取消绑定由 'loadRecord' 方法设置的任何记录。

    例子:

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

    【讨论】:

      【解决方案3】:

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

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

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

      myForm.clearForm()

      myForm 是您的表单面板。

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

      【讨论】:

      • 这与重置表单不同(至少以 OP 想要的方式)。通过将所有字段设置为空,如果用户保存表单,之前的记录将更新为空值。雷米乌斯的回答是正确的。
      • @Reimius - 可能是因为它代表了投票者的正确答案。答案可能因各种原因而被证明是有价值的,并且都可以根据有效性、利益和意见进行投票 - 确实请参阅 Glenn Lawrence 的评论
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        你可以试试这个……

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

        【讨论】:

        • 为什么会有这样的CUBITAL文字?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-31
        • 2011-08-13
        相关资源
        最近更新 更多