我面临使用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'
});
答案 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'
});
});