2011-07-09 40 views
1

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

gridPanel.addListener('cellclick',myfunction); 

网格内:

listeners: { 
    cellclick: myfunction 
} 

我试图做到这一点的对象selectionModel的。
他们都没有工作。
哪里可以解决问题?

+0

你使用哪个版本的extjs? – TheHorse

+0

我的版本是extjs 3 – lvil

+0

试听者:{'cellclick':function(){alert('a')},范围:this} – atian25

回答

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配置对象时会发生同样的事情。尝试定义回调在线:通过时间

  1. 定义功能在更大范围内,你的类
  2. 外的构造函数中或在initComponent装上监听器,:

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

    其他选项你的类方法应该被实例化

  3. 稍后添加监听器
+0

#3的工作。谢谢。 – lvil

0

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

+0

这没有帮助。我认为点击事件没有得到单元 – lvil

0

addListener工作。我有一些语法错误。 仍将侦听器作为参数添加不起作用

0

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

Ext.onReady(函数(){

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

}

这将有助于如果我阅读:)我的解决方案是用于行选择的不是细胞的选择,但它很可能会工作。

+0

我尝试了onReady函数,但它无法获取网格。我认为它是在加载html之后执行的,但在JavaScript之前执行。也许这不是问题,但它不管用。 – lvil