2011-10-13 77 views
5

我有一個網格綁定到窗體的形式提交操作是更新加載的記錄,如果有一個,並添加一個新的記錄,如果它的空白窗體。但如果我選擇一個記錄,然後再調用extjs 4表單在form.reset()之後仍然有記錄集。

myGrid.getSelectionModel().deselectAll(); 
myform.getForm().reset(); 

以清除表單,所以我可以添加它會以更新先前選擇的記錄了新的紀錄。

record = myform.getRecord(); 
if(record){ 
record.set(values); 
} 

should not myform.getRecord();重置後爲空?如何清除記錄選擇?

+0

可能重複(http://stackoverflow.com/questions/18988727/reset-form-record-not-clearing-values-extjs -4-2) –

回答

3

簡而言之,不,您不應該在第一次通過loadRecord加載任何內容後無法合法清除記錄。
雖然,你仍然可以做myform.getForm()._record = null賦值,但我強烈反對,因爲它可能會破壞ExtJS的一些內部功能。

下面是從ExtJS的API的提取物:

getRecord():Ext.data.Model
返回已通過loadRecord

加載的最後Ext.data.Model實例 並且它確實如此,返回通過loadRecord加載的最後一條記錄。

這裏有一些來源:

getRecord: function() { 
    return this._record; 
}, 

loadRecord: function(record) { 
    this._record = record; 
    return this.setValues(record.data); 
}, 

其實,這些都是Ext.form.Basic的唯一方法(它的實例被getForm()返回)處理this._record領域。

至於復位

reset: function() { 
    var me = this; 
    me.batchLayouts(function() { 
     me.getFields().each(function(f) { 
      f.reset(); 
     }); 
    }); 
    return me; 
}, 

正如你可以看到,復位無關由getRecord()返回,它只是重置字段值的記錄。

+0

感謝您的解釋!我已經爲recordID添加了一個隱藏字段,並通過是否設置了id字段來驗證我的提交類型。 – Early73

+0

這不再有效。看看問題的答案http://stackoverflow.com/questions/18988727/reset-form-record-not-clearing-values-extjs-4-2 –

0

我發現這個問題,因爲我有一個類似的情況,但稍有不同:

  • ExtJS的4.1.1
  • TreePanel中

在ExtJS的4.1同步()方法,你可以使用選項對象,您可以在其中定義回調,成功和失敗功能。因爲我敢肯定,我只synchronozing只是一個記錄,我裝了返回的記錄:

me.getHelpItemsStore().sync({ 
    success: function(batch) { 
     // We expect single operation so... 
     var record = batch.operations[0].getRecords()[0]; 
     form.loadRecord(record); 
    } 
}); 

小晚,但希望可以幫助您。

2

對於任何有興趣的人,您可以覆蓋默認窗體面板以添加清除表單域的功能。以下添加到您的代碼:

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

然後,您可以使用清除表單:

myForm.clearForm()

哪裏myForm是表單面板。

2

這是你在尋找什麼:

form.getForm().reset(true); 

真正解除綁定由loadRecord設置的任何記錄。

Ext.form.Basic.reset()語法

的[重置表單記錄不清除價值觀 - ExtJS的4.2]
相關問題