Gridview 从网格编辑字段访问记录
我使用带有CellEditingPlugin和两个日期列startdate和enddate的网格。这两列都分配了一个日期字段,名为startdateEditfield和enddateEditfield 如果两个日期相同,并且startdate已更改,那么我也要更改enddate 所以我做了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
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插件的事件。