2014-04-03 194 views
0

我使用Extjs 4.2,所以我有一個網格與rowediting插件。所有的工作都很好,我想知道如何更新一個字段值,具體取決於另一個字段。我的意思是,例如,如果在我的網格中有field1和field2,則需要更新field3值,其中field1 + field2值當其中一個更改時。通常使用jQuery,我們可以爲每個字段編寫一個更改事件,但我如何在rowediting事件上做到這一點?更新RowEditing字段時更改其值

這可能嗎?

回答

1

您可以使用roweditedit事件如下:

煎茶小提琴:Grid RowEditor - Change cell value based on condition

grid.on('edit', function(editor, e){ 
/** 
* here I am checking the column name to complete process 
* you change what you want 
*/ 
if (e.field == "name") { 
    e.record.set('result', parseInt(e.record.get('dummy')) + parseInt(e.record.get('age'))); 
} 

}) 
+0

謝謝你的回答。然而,我感興趣的是設置列,然後在不按更新的情況下進行另一列更新(保持記錄髒,但仍顯示更新)。原因是因爲我的更新按鈕應該提交記錄並使用不是我想要的服務器更新商店。 –

0

當您使用RowEditor,該e.field值完全取決於被點擊的場編輯行。

爲了說明問題:

  1. 在以前的答案,打開小提琴鏈接(https://fiddle.sencha.com/#fiddle/4pj)。
  2. 雙擊電子郵件字段並更改名稱。
  3. 處理程序不會更新結果字段,因爲e.field現在將是'email'而不是'name'。

也就是說,行編輯器會將您單擊的字段視爲已編輯的字段。這是沒有意義的,因爲它是'行'編輯器,並且很可能用於編輯行中的多個字段。

要獲取僅修改字段的列表,請使用e.record.getChanges()。這些將只給你修改的字段和他們的新值。

0

你必須編輯添加到列,編輯器就像任何組件,有聽衆,類型等,然後添加一個變化監聽

例子: ...

{ 
    header: 'HeaderName', 
    dataIndex: 'man_peso', 
    type: 'number', 
    width: 50, 
editor: { 
     enableKeyEvents: true, 
     listeners: { 
      change: function(c, e, eOpts) { 
       //here you can modify others components 
      } 
     }, 
     xtype: 'textfield', 
     maskRe: /[0-9\.]/, 
     maxLength: 16 
    }, 

..