2012-01-07 12 views
1

は、私はこのような配置「ダウンロード」リンクされた列の1を持つ単純なグリッドを持っています。のExtJS domquery問題

init : function() { 
    this.control({ 
     'accountFiles a[class=downloadCfg]': { 
      click: function() { 
       alert('test'); 
      } 
     } 
    }); 
} 

非常に基本的な、それは仕事をdoesntの:今すぐコントローラに移動する私は、リンクがクリックされるたびにキャッチするグリッド上のリスナーを置きました。グリッドの「レンダラー」機能を介してリンクが作成されている可能性がありますか?何か案は?

答えて

1

@Romeo

これは、あなたがダウンロードリンクをクリックされているかどうかをつかむことができる方法です。

'accountFiles': { 
      itemclick: function(thisView, record, item, index, e, eOpts) { 
       var t = e.getTarget('.downloadCfg'); 

       if (!Ext.isEmpty(t)) 
        alert('Download clicked!!'); 
       else 
        alert('Other item clicked!!'); 
      } 
     } 

あなたがダウンロードリンクがクリックされたことを確認した後は、あなたが完全なを含むレコードを持っています行を表すレコード。

0
accountFiles a[class=downloadCfg] 

タグを持っているaccountFilesタグのすべての子孫を選択します。クラス属性でフィルタリングします。

タグではなくコンポーネントIDで選択するComponentQuery構文と混同しているようです。

+0

いいえ、混乱しません。私は 'downloadCfg'のクラスとのリンクがクリックされたときにアクションを取得したいです。各行のグリッドにレンダリングされたリンクが表示されます。 –

1

この問題を解決する方法はわかりませんが、私は別の解決策を知っています。

はGridPanelにメソッドを作成します:onclickハンドラ内のアクションは、DOMクラスを使用してグリッドを見つけようと

renderer: function(value, meta, record, rowIndex, colIndex, store) { 
    return '<a href="#" onclick="Ext.getCmp(Ext.get(this).parent(\'.x-grid\').id).doDownload(\'' + store.data.getKey(record) + '\')">Download</a>'; 
} 

doDownload: function(recordId) { 
    var record = this.getStore().data.get(recordId); 
    // do something 
} 

は、その後に変更レンダラーを作成します。

関連する問題