将侦听器添加到编辑器网格面板

时间:2011-07-09 09:39:59

标签: extjs

有一个编辑器网格面板 我正在尝试向单元格单击事件添加侦听器。我尝试过不同的方式:

gridPanel.addListener('cellclick',myfunction);  

在网格内:

listeners: {
    cellclick: myfunction
}

我试过在selectionModel对象中这样做 他们都没有工作 哪里可以问题?

4 个答案:

答案 0 :(得分:0)

您必须使用cellmousedown网格面板或选择模型的单元格selectionchange

答案 1 :(得分:0)

addListener有效。我有一些语法错误。 仍然将侦听器添加为参数

答案 2 :(得分:0)

如果你不能将监听器添加为配置参数,可能是因为你遇到了回调函数不在范围内的问题,类似于:

> var obj = { greetMe: this.sayHi, sayHi: function(){ console.log('hi'); }};
undefined

> obj.greetMe();
TypeError: Property 'greetMe' of object #<Object> is not a function

> obj.greetMe
undefined

在第一行中,this仍在引用定义对象时的全局(读取:窗口)对象。所以this.sayHi === window.sayHi === undefined。定义Ext配置对象时会发生同样的事情。尝试定义回调内联:

> var obj = { greetMe: function(){ console.log('hi'); }};
undefined

> obj.greetMe()
hi

其他选择:

  1. 在课堂外更广泛的范围内定义功能
  2. 在构造函数中或initComponent中附加侦听器,此时应该实例化类方法
  3. 稍后再附上听众

答案 3 :(得分:0)

对于行选择,我将它放在选择模型上并直接双击网格。这很好但但我必须警告你,如果你不阻止默认事件,你会得到可怕的内存消耗。

Ext.onReady(函数(){

requestGrid.getSelectionModel().on('rowselect', handleRowSelect);
requestGrid.on('rowdblclick', handleDoubleClick);

}

如果我阅读它会有所帮助:)我的解决方案是行选择而不是单元格选择,但它可能非常有效。