2014-04-03 131 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 
    }, 

..