我有一个使用单元格编辑插件的网格面板。
在此网格面板中,我希望以下列方式对单元格进行条件编辑:
当用户点击要编辑的单元格时,应显示确认对话框 - “您要编辑单元格吗?” - 如果他选择“是”,则关注单元格并开始编辑,否则单元格将保持禁用状态。
我尝试使用'beforeedit'事件,但是即使显示确认框,用户也可以使用箭头键(编辑器是数字字段)修改值,即通过鼠标单击已禁用,但箭头键仍可以更改字段的值。
此外,当用户选择“是”时,单元格会失去焦点,我无法在“是”点击后立即开始编辑。我尝试过使用'焦点'方法,但没有运气。
有人可以指导吗?
提前致谢。
更多信息:
我尝试使用 - startEditByPosition() - 当用户选择“是”时,单元格编辑插件的功能。但是,由于这个原因,确认框会一直显示,就像选择“是”编辑开始一样,再次调用beforeedit事件。有什么帮助吗?
答案 0 :(得分:16)
您可以创建一些标志变量,如isEditAllowed
。在beforeedit
中查看。如果是假显示confirm
则别做什么。如果用户确认将isEditAllowed
设置为true
和startEditByPosition
。在edit
事件集isEditAllowed
到false
:
plugins: [
Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit: 1,
listeners: {
'beforeedit': function(e) {
var me = this;
var allowed = !!me.isEditAllowed;
if (!me.isEditAllowed)
Ext.Msg.confirm('confirm', 'Are you sure you want edit?', function(btn){
if (btn !== 'yes')
return;
me.isEditAllowed = true;
me.startEditByPosition({row: e.rowIdx, column: e.colIdx});
});
return allowed;
},
'edit': function(e) {
this.isEditAllowed = false;
}
}
})
],