在可编辑网格中,如何使Ext组合框在选择项时立即完成编辑模式
In an editable grid, how to make an Ext combo box immediately finish edit mode when selecting an item?
我已经配置了一个Ext JS 4网格,可以使用celllediting插件进行编辑。网格中的一些单元格有文本字段编辑器,一些单元格使用组合框编辑器。这一切都工作得很好,但我有一个小问题与组合框编辑器的默认行为。
基本上,当编辑具有组合框编辑器的单元格时,如果您使用鼠标从下拉菜单中选择一个项目,则该单元格的"编辑"模式不会完成。换句话说,单元格不会立即退出编辑模式并被标记为脏。相反,它会一直处于编辑模式,直到你点击页面上的其他地方。
我认为Sencha将此设置为组合框编辑器的默认行为是不寻常的,但我不会抱怨。我只是想知道如何能够选择一个组合框项目,并立即采取编辑模式的单元格,但我不知道在哪里定义这个自定义行为。
下面是一个JS的小例子:
http://jsfiddle.net/FFwkM/为子孙后代复制的代码:
var stateStore = Ext.create('Ext.data.Store', {
fields: ['name'],
data : [
{"name":"Alabama"},
{"name":"Alaska"},
{"name":"Arizona"}
]
});
var gridStore = Ext.create('Ext.data.Store', {
fields:['firstName', 'state'],
data:{'items':[
{"firstName":"Lisa", "state":"Alabama"},
{"firstName":"Bart", "state":"Alabama"},
{"firstName":"Homer", "state":"Alabama"},
{"firstName":"Marge", "state":"Arizona"}
]},
proxy: {
type: 'memory',
reader: {
type: 'json',
root: 'items'
}
}
});
Ext.create('Ext.grid.Panel', {
title: 'Simpsons',
store: gridStore,
columns: [{
header: 'First Name', dataIndex: 'firstName', flex: 1, editor: 'textfield'
}, {
header: 'State', dataIndex: 'state', flex: 1, editor: {
xtype: 'combobox', store: stateStore, queryMode: 'local', displayField: 'name', valueField: 'name'
}
}],
selType: 'cellmodel',
plugins: [{
ptype: 'cellediting',
clicksToEdit: 2
}],
height: 150,
width: 200,
renderTo: Ext.getBody()
});
实现所需行为的一种方法是为组合框上的select
事件添加侦听器,然后在处理程序中触发blur
事件。例子:
Ext.create('Ext.grid.Panel', {
title: 'Simpsons',
store: gridStore,
columns: [{
header: 'First Name', dataIndex: 'firstName', flex: 1, editor: 'textfield'
}, {
header: 'State', dataIndex: 'state', flex: 1, editor: {
xtype: 'combobox', store: stateStore, queryMode: 'local', displayField: 'name', valueField: 'name',
listeners: {
select: function(combo, recs, opts){
combo.fireEvent('blur'); //<------
}
}
}
}],
selType: 'cellmodel',
plugins: [{
ptype: 'cellediting',
clicksToEdit: 2
}],
height: 150,
width: 200,
renderTo: Ext.getBody()
});
工作叉在这里:http://jsfiddle.net/Zd5QM/
听select事件,然后:
listeners: {
select: {
fn: function(c, r, eopts) {
c.ownerCt.completeEdit();
}
}
}
http://www.sencha.com/forum/showthread.php?261264-How-to-make-a-grid-cell-immediately-exit-edit-mode-when-a-combo-box-item-is-selected 相关文章:
- Rad网格编辑模式通过选中复选框时的java脚本启用禁用所需的字段验证器
- jqGrid - 是否有任何“网格编辑模式”
- 有没有更好的方法可以在ng网格中切换编辑模式
- 在客户端的编辑模式下,在同一单元格网格视图中选中复选框时禁用文本框
- jquery.filer编辑模式动态文件添加
- 设置一个下拉填充到它's的值和文本在AngularJS和asp.net webApi中的编辑模式
- 脚本仅在编辑模式 - 共享点页面上执行
- 在剑道网格中有选择地将编辑行中的单元格切换为编辑模式
- 详细信息视图 ASP.Net 取消客户端的默认编辑模式
- 如何在 MVC-4 中的编辑模式弹出窗口中获取复选框
- 尝试检测网格视图的哪一行处于编辑模式,然后在选中复选框字段时调整文本框
- Kendoui ListView在编辑模式下删除行
- 当不处于编辑模式时,下拉列表中的Kendo单元格值显示为未定义
- 从javascript访问Telerik RadGrid编辑模式
- ui网格中的EditableCellTemplate处于编辑模式[ng网格3.X]
- jqgrid密码字段不仅在编辑模式下
- 当单元格进入编辑模式时,禁止在除一个单元格(选定行中)之外的任何位置单击
- 如何在Xpage中将Editbox的模式从读取模式更改为编辑模式
- 网格视图使用ESC和JavaScript退出编辑模式
- Javascript:检查RadGrid项是否处于编辑模式