Gridview 从网格编辑字段访问记录

Gridview 从网格编辑字段访问记录,gridview,extjs,Gridview,Extjs,我使用带有CellEditingPlugin和两个日期列startdate和enddate的网格。这两列都分配了一个日期字段,名为startdateEditfield和enddateEditfield 如果两个日期相同,并且startdate已更改,那么我也要更改enddate 所以我做了 var start = Ext.getCmp("startdateEditfield") start.on('change',function(field,newValue,oldValue) { v

我使用带有CellEditingPlugin和两个日期列startdate和enddate的网格。这两列都分配了一个日期字段,名为startdateEditfield和enddateEditfield

如果两个日期相同,并且startdate已更改,那么我也要更改enddate

所以我做了

var start = Ext.getCmp("startdateEditfield")
start.on('change',function(field,newValue,oldValue) {
    var end = Ext.getCmp("enddateEditfield")
    if(end.getValue()==oldValue) end.setValue(newValue);
});

这不起作用,因为enddateEditfield不存在,因为我正在编辑startdate,而不是enddate。但是如何访问正在编辑的记录呢?

在某些事件处理程序上,您可以使用以下方法访问记录:

var selectedModel = this.up('grid').getSelectionModel().getSelection()[0];
selectedModel.set('dataIndexOfNextCol', "Success");

查看我对这个问题的回答,它可能会帮助您:

好吧,您可以尝试使用beforedit和edit侦听器

我就是这样做到的

Ext.define('Foo.view.BarView', {
    extend: 'Ext.grid.Panel',

    alias: 'widget.foobarview',

    initComponent: function() {
        var me = this;

        // this is our last selected record        
        this.lastRecord = null;

        this.plugins =  [{
            ptype: 'cellediting',
            clicksToEdit: 1
        }];

        this.listeners = {
            beforeedit: function(editor, obj){
                this.lastRecord = obj.record;
            }
        };

        this.columns = [
            {
                dataIndex: 'foo',
                text: 'bar',
                editor: {
                    xtype: 'datefield',
                    listeners: {
                        change: function(datefield, newValue, oldValue, eOpt){
                        me.fireEvent('myEvent', datefield, me);
                    }
                }
            }
        }
    ]
};
现在在您的控制器中,您可以在更改网格中datefield的值时获取最后选择的记录

Ext.define('Foo.controller.BarController', {
    extend: 'Ext.app.Controller',


    stores: ['your stores'],

    views: [
        'your views'
    ],

    init: function() {
        var me = this;
        'foobarview': {
            myEvent: this.onFireMyEvent
        }
    },

    onFireMyEvent: function(field, grid){
        record = grid.lastRecord;
    }
});
检查CellEditing插件的事件。