【发布时间】:2011-08-11 13:30:36
【问题描述】:
我搜索了与 ExtJS 相关的问题,但没有找到任何参考,但如果我错过了,请提前提出重复的问题。
我想请教一些关于如何制作 ExtJS 4 网格的帮助:单元格编辑:自动编辑功能——我的意思是,我想在按一个键时进入单元格编辑模式(例如,通过按“ 123”在突出显示的单元格中,文本被替换为“123”)(如果有的话)。目前进入单元格编辑模式可以通过按回车键或鼠标点击来完成。
作为基础,我使用 Sencha 提供的示例:http://dev.sencha.com/deploy/ext-4.0.2a/examples/grid/cell-editing.html
任何提示,指针将不胜感激。
提前致谢! :)
实际上我确实部分解决了我的问题。找到了一种使单元格在按键时可编辑的方法,将 selectOnFocus 配置参数放在单元格中用于文本选择,现在我需要在单元格中插入第一个字符(即启动编辑模式)。
它可能不是最漂亮的解决方案,但它对我有用 :) 这是到目前为止的完整代码。
var tStore = Ext.create('Ext.data.Store', {
storeId:'simpsonsStore',
fields:['name', 'email', 'phone'],
data:{'items':[
{"name":"Lisa", "email":"lisa@simpsons.com", "phone":"555-111-1224"},
{"name":"Bart", "email":"bart@simpsons.com", "phone":"555--222-1234"},
{"name":"Homer", "email":"home@simpsons.com", "phone":"555-222-1244"},
{"name":"Marge", "email":"marge@simpsons.com", "phone":"555-222-1254"}
]},
proxy: {
type: 'memory',
reader: {
type: 'json',
root: 'items'
}
}
});
var tCellEdit = Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit: 1
});
var tGrid = Ext.create('Ext.grid.Panel', {
title: 'Simpsons',
store: tStore,
columns: [
{header: 'Name', dataIndex: 'name', field: 'textfield'},
{header: 'Email', dataIndex: 'email', flex:1,
editor: {
xtype:'textfield',
allowBlank:false,
selectOnFocus: true
}
},
{header: 'Phone', dataIndex: 'phone'}
],
selType: 'cellmodel',
plugins: [tCellEdit],
listeners: {
keypress: {
element: 'el',
fn: function(iEvent, iElement) {
iCode = iEvent.getKey();
if (iCode != undefined && iCode != iEvent.LEFT && iCode != iEvent.RIGHT && iCode != iEvent.UP && iCode != iEvent.DOWN && iCode != iEvent.ENTER && iCode != iEvent.ESC) {
var iView = tGrid.getView();
var position = iView.selModel.position;
tCellEdit.startEditByPosition(position);
}
}
}
},
height: 200,
width: 400,
renderTo: Ext.getBody()
});
【问题讨论】:
-
您能否确认您希望网格编辑器字段中的所有文本都被选中?类似于此处链接的页面上的操作但在网格中? link
-
是的,这就是它的想法。
-
在我看来,我可以通过使用配置参数 selectOnFocus: true 来做我想做的事
-
您应该将以上内容移至答案 - 如果没有人有更好的答案,请接受您自己的答案并将其移出“无答案”垃圾箱。 :)
标签: javascript extjs extjs4