Ext JS 3.4:用于单元格编辑的事件监听器

时间:2018-12-05 02:58:24

标签: javascript extjs extjs3

我面临使用Ext Js 3.4中的单元格编辑器触发编辑事件的问题。

我试图实现在按'Enter'后编辑的单元格上触发ajax调用。

现在,我只是替换为console.log('hi'),但是在按下'Enter'之后它什么也没显示。

我不确定我的代码有什么问题。欣赏有人指出。谢谢。

var grid = new Ext.grid.EditorGridPanel({
    store: api_store,
    loadMask: true,
    clicksToEdit: 1,
    tbar: [{
        text: 'Create',
        handler: function () { }
    }],
    columns: [
        {
            id: 'name',
            header: 'Key Name',
            width: 300,
            sortable: true,
            dataIndex: 'name',
            editor: {
                xtype: 'textfield',
                allowBlank: false,
                listener: {
                    edit: function (el) {
                        console.log('hi');
                    }
                }
            }
        },
        {
            header: 'Key Value',
            width: 500,
            sortable: false,
            dataIndex: 'key'
        }
    ],
    sm: new Ext.grid.RowSelectionModel({ singleSelect: true }),
    viewConfig: {
        forceFit: true
    },
    height: 210,
    stripeRows: true,
    height: 350,
    title: 'Keys'
});

1 个答案:

答案 0 :(得分:1)

解决方案:

使用EditorGridPanel afteredit事件:

  

afteredit(e)

     

在编辑单元格后触发。编辑事件对象具有以下内容   属性

     
      
  • 网格-此网格
  •   
  • 记录-正在编辑的记录
  •   
  • field-正在编辑的字段名称
  •   
  • value-所设置的值
  •   
  • originalValue-编辑之前该字段的原始值。
  •   
  • 行-网格行索引
  •   
  • 列-网格列索引
  •   
     

参数:

     

e:对象一个编辑事件(请参见上面的说明)

示例:

Ext.onReady(function () {        

        var api_store = new Ext.data.ArrayStore({
            fields: ['key', 'name'],
            data: [
                ['1', 'Name1'],
                ['2', 'Name2'],
                ['3', 'Name3']
            ]
        });


        var grid = new Ext.grid.EditorGridPanel({
            renderTo: Ext.getBody(),
            store: api_store,
            loadMask: true,
            clicksToEdit: 1,
            tbar: [{
                text: 'Create',
                handler: function () { }
            }],
            listeners: {
                afteredit: function(e) {
                    console.log('After edit. Column: ' + e.field);
                }
            },
            columns: [
                {
                    id: 'name',
                    header: 'Key Name',
                    width: 300,
                    sortable: true,
                    dataIndex: 'name',
                    editor: {
                        xtype: 'textfield',
                        allowBlank: false
                    }
                },
                {
                    header: 'Key Value',
                    width: 500,
                    sortable: false,
                    dataIndex: 'key'
                }
            ],
            sm: new Ext.grid.RowSelectionModel({ singleSelect: true }),
            viewConfig: {
                forceFit: true
            },
            height: 210,
            stripeRows: true,
            height: 350,
            title: 'Keys'
        });     

});