我正在尝试选择我的列的itemid编辑器,但我无法从控制器中截取该事件。
视图:
Ext.define('MyApp.view.fatturaVendita.FatturaVendita', {
extend: 'Ext.window.Window',
height: 700,
id: 'fatturaVendita',
width: 1000,
collapsible: true,
title: 'Fattura Vendita',
maximizable: true,
initComponent: function() {
var me = this;
Ext.applyIf(me, {
items: [
{
.....
xtype: 'gridcolumn',
itemId: 'clnCodiceArticolo',
width: 45,
sortable: false,
dataIndex: 'CodiceArticolo',
text: 'Art.:',
editor: {
xtype: 'textfield',
itemId: 'txtCodiceArticolo',
msgTarget: 'side'
}
},
......
控制器:
......
this.control(
'#fatturaVendita #txtCodiceArticolo':
{
afterrender: function (f, e) {
alert("change");
},
specialkey: function (f, e) {
alert(specialkey);
var me = this;
if (e.getKey() == e.ENTER) {
if (getWin(me.getIdWin(), '#txtCodiceArticolo').getValue() == "") {
Ext.create('MyApp.view.fatturaVendita.Ricerca', { grd: "grdCorpoFatturaVendita", store: "ArticoloStore", dataDescrizione: "Descrizione", testoDescrizione: "Descrizione", idCampo: f.id, codice: f.name, descrizione: "DescrizioneArticolo" }).show();
}
}
},
},
......
所有字段我的网格列和编辑器使用itemid,我只使用id为我的窗口“fatturaVendita”。 但是这段代码不起作用。我可以这样做吗? =(
与此示例类似,但我无法使其正常工作。我似乎无法拦截网格文本字段的事件SpecialKey: http://jsfiddle.net/brux88/S2rdL/20/
**
更新:
** 谢谢你的帮助,现在工作,但我不明白。我有一个多窗口应用程序。我正在使用itemid作为控件,而只使用每个窗口的id。如果我有两个窗口并且我有相同的itemid(txtCodiceArticolo),extjs如何确定我要释放哪个事件?事实上,如果我使用
,在我的控制器中 this.control({
'#idWindows #itemId': {
specialkey: function (f, e) {
if (e.getKey() == e.ENTER) {
alert("2");
}
}
}
。我不仅适用于列编辑器。
答案 0 :(得分:1)
我发现你的小提琴中存在一个严重的错误,即你的控制器的init()
函数没有被调用,所以你的事件处理程序永远不会运行。
如果您在init()
函数中包含控制器,框架会自动调用Ext.application
函数:
Ext.application({
controllers: [
'YourApp.Controller'
],
});
但是,如果您尝试手动实例化控制器,则需要手动调用init()
:
Ext.define('YourApp.Controller', {...});
var ctrl = Ext.create('YourApp.Controller');
ctrl.init();
这一点是official doc。
我让你的小提琴工作,但似乎只有ENTER键触发specialkey
事件。查看http://jsfiddle.net/jaux/Yqtv3/
更新
你有多窗口,每个窗口都有不同的id,比如他们的id是'window1','window2'等等。在控制器里,你会有类似的东西:
this.control({
'#window1 #txtCodiceArticolo': {
specialkey: {...}
},
'#window2 #txtCodiceArticolo': {
specialkey: {...}
}
})
这就是说第一个'特殊键'属于window1的txtCodiceArticolo,第二个'特殊键'属于window2的txtCodiceArticolo。