2011-07-28 21 views
4

fireEventitemclickは、ストアがロードされた後にどのようにして作成しますか?extjs 4グリッドfireevent itemclick

私はこれを持っているが、それは動作しません。ここで

pcfstore.on('load', function(){ 
    //auto select first row; 
    Ext.getCmp('pcf_grid').getSelectionModel().select(0); // this works 

    //fire itemclick event 
    var grid= Ext.getCmp('pcf_grid'); 
    grid.fireEvent('itemclick', grid, 0); //this doesnt work 

}); 

がグリッドビューで私のitemclickイベントです:基本的に

viewConfig: { 
    listeners: { 
    itemclick: function(dv, record, item, index, e) { 
      alert(record.data.code); 
     } 
    } 
} 

グリッド負荷、それはの警告ウィンドウを起動する必要があり選択された第1行 グリッド。

答えて

10

は、Viewのイベントですが、Gridではありません。試してみてください:

grid.getview().fireEvent('itemclick', grid, 0); 

そして、代わりにselectionchangeを使用してください。

UPDATE

あなたは両方itemcontextmenuselectionchangeハンドラを持っている場合、それは少し混乱することができます。この場合は、正方形に戻ってitemclickイベントを使用することをお勧めします。

しかし、あなたのコードは、いくつかの変更を持っている必要があります:

  1. 割り当てitemclickイベントをグリッドに、それはビューのないように。
  2. itemclickパス実際のレコード、NOTインデックスこのよう

発射:

grid.getSelectionModel().select(0); 
grid.fireEvent('itemclick', grid, grid.getSelectionModel().getLastSelected()); 

そして、ここで私が話しているものを証明するfiddleです。

+0

高速レスポンスではxです。しかし、私は右クリックでコンテキストメニューを表示するこのグリッドアクションの例を使用しています。私はあなたがアドバイスしたようにfireEvent itemclickをSelectionchangeに変更しました。私がしたいのは、マウスを左クリックすると警告メッセージが表示され、右クリックするとコンテキストメニューが表示されます。今のところ、グリッド内の項目を右クリックすると、警告メッセージボックスが表示されます。そのトリックを行う回避策を知っていますか?再びtnx。 – Carlo

+0

selectchangeイベントはitemcontextmenuイベントより先に発生します。そのため、マウスを右クリックしても警告ボックスが表示されます。もう一度助けを求めて。感謝します。 – Carlo

+0

@カルロ、私の答えを更新しました –

0

数時間の検索の後、解決策が見つかりました。私のために働くことは不可能、以下の機能を作るExtJs4に問題があるように見えます:私のコントローラで

grid.getSelectionModel().select(0); 

または

grid.getView().select(0); // note that this function is deprecated in ExtJS4!! 

が、私の代わりにこのコードを使用します。

store.load({ 
    callback: function (records, operation, success) {   
     var rowIndex = this.find('id', myRecord); //where 'id': the id field of your model. You can replace 'id' with your unique field.. And 'this' is your store. 
     grid.getView().select(rowIndex); 
    } 
}) 

ここで、myRecordは強調表示して選択するレコードです。 それは魅力のように働いた。行0を強​​調表示して選択しました。ただし、このコードで行が選択されている場合、itemclickリスナーは起動されませんでした。