2011-07-09 14 views
1

エディタグリッドパネルがあります。
セルのクリックイベントにリスナーを追加しようとしています。私はさまざまな方法でそれを行うことを試みた:グリッド内のエディタグリッドパネルにリスナーを追加する

gridPanel.addListener('cellclick',myfunction); 

listeners: { 
    cellclick: myfunction 
} 

私はselectionModelのオブジェクトでそれを行うことを試みました。
いずれも機能しませんでした。
どこに問題がありますか?

+0

どのバージョンのextjを使用しますか? – TheHorse

+0

私のバージョンはextjs 3 – lvil

+0

try listeners:{'cellclick':function {){alert( 'a')}、scope: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 configオブジェクトを定義するときも同じことが起こります。コールバックをインラインで定義してみてください。

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

> obj.greetMe() 
hi 

その他のオプション:

  1. あなたのクラスの外
  2. は、その時点で、コンストラクタ内またはinitComponent以内にリスナーを添付し、より広い範囲で関数を定義しますあなたのクラスメソッドはインスタンス化する必要があります
  3. 後でリスナーを添付します
+0

#3が働いた。ありがとうございました。 – lvil

0

選択モデルのグリッドパネルまたはセルselectionchangecellmousedownを使用する必要があります。

+0

それは役に立ちません。私はクリックイベントがセルを取得しないと思う – lvil

0

addListenerが機能しました。私は構文エラーがありました。 パラメータとしてリスナーを追加しても機能しません。

0

行の選択については、選択モデルに置き、グリッド上で直接ダブルクリックします。これはうまくいきますが、あなたが恐ろしいメモリ消費を受けるデフォルトのイベントを防止しなければ、私はあなたに警告する必要があります。

Ext.onReady(関数(){

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

}

私は私のソリューションが選択を細胞ではない行を選択するためのものです:)読めばそれが役立つだろうが、それは非常によく働くかもしれません。

+0

私はonReady関数を試しましたが、グリッドを取得できませんでした。私はそれがHTMLがロードされた後に実行されたと思うが、javascriptの前に。たぶんそれは問題ではなかったが、とにかくうまくいかなかった。 – lvil

関連する問題