我使用Extjs 4.2,所以我有一个网格与rowediting插件。所有的工作都很好,我想知道如何更新一个字段值,具体取决于另一个字段。我的意思是,例如,如果在我的网格中有field1和field2,则需要更新field3
值,其中field1
+ field2
值当其中一个更改时。通常使用jQuery,我们可以为每个字段编写一个更改事件,但我如何在rowediting事件上做到这一点?更新RowEditing字段时更改其值
这可能吗?
我使用Extjs 4.2,所以我有一个网格与rowediting插件。所有的工作都很好,我想知道如何更新一个字段值,具体取决于另一个字段。我的意思是,例如,如果在我的网格中有field1和field2,则需要更新field3
值,其中field1
+ field2
值当其中一个更改时。通常使用jQuery,我们可以为每个字段编写一个更改事件,但我如何在rowediting事件上做到这一点?更新RowEditing字段时更改其值
这可能吗?
您可以使用rowedit
edit
事件如下:
煎茶小提琴: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')));
}
})
当您使用RowEditor,该e.field值完全取决于被点击的场编辑行。
为了说明问题:
也就是说,行编辑器会将您单击的字段视为已编辑的字段。这是没有意义的,因为它是'行'编辑器,并且很可能用于编辑行中的多个字段。
要获取仅修改字段的列表,请使用e.record.getChanges()
。这些将只给你修改的字段和他们的新值。
你必须编辑添加到列,编辑器就像任何组件,有听众,类型等,然后添加一个变化监听
例子: ...
{
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
},
..
谢谢你的回答。然而,我感兴趣的是设置列,然后在不按更新的情况下进行另一列更新(保持记录脏,但仍显示更新)。原因是因为我的更新按钮应该提交记录并使用不是我想要的服务器更新商店。 –