更改行编辑字段的值时更新其值



我正在使用 Extjs 4.2,所以我有一个带有行编辑插件的网格。一切正常,我想知道如何根据另一个字段更新一个字段值。我的意思是,例如,如果我的网格中有 field1 和 field2,那么当其中一个值被更改时,我需要用 field1 + field2 值更新field3值。通常使用 jquery 我们可以为每个字段编写一个更改事件,但是我如何在行编辑事件上执行此操作?

这可能吗?

您可以使用rowedit edit事件,如下所示:

煎茶小提琴:网格行编辑器 - 根据条件更改单元格值

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')));
}
})

您必须将编辑器添加到列中,编辑器就像任何组件一样,具有侦听器,类型等。 然后添加一个更改侦听器

例:...

{
    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
    },

使用 RowEditor 时,e.field 值完全取决于单击以编辑行的字段。

为了说明问题:

  1. 在上一个答案中,打开小提琴链接(https://fiddle.sencha.com/#fiddle/4pj)。
  2. 双击电子邮件字段并更改名称。
  3. 处理程序不会更新结果字段,因为 e.field 现在将是"电子邮件"而不是"名称"。

也就是说,行编辑器将您单击的字段视为已编辑的字段。这没有意义,因为它是"行"编辑器,最有可能用于编辑行中的多个字段。

若要获取仅已修改字段的列表,请使用 e.record.getChanges() 。这些将仅为您提供修改后的字段及其新值。

相关内容

  • 没有找到相关文章

最新更新