2012-03-02 31 views
5

extjsでグリッドを作成しました。4. selection.CheckboxModelが実装されています。これは、特定の行をクリックするたびに行が選択/選択解除されることを意味します。今私はカスタムボタンが含まれているので、最後の列でこの選択を無効にしたい。 (私は、ボタンがクリックされた場合、行を選択したくありません)。ExtJS 4 - グリッド - 特定の列の行選択を無効にする

これはどのように行うのですか?

事前に感謝します。

答えて

9

これは、Senchaのドキュメントが不足している場合にのみ、実際には少し難しい問題です。

実際には、CheckboxModelにはbeforeselectイベントが継承されています(Ext.selection.RowModel)。しかし、列インデックスを簡単に取得する方法はありません。なぜなら、それはRowModelのポイントなので正直です。

beforecellmousedownと呼ばれるExt.view.Table(グリッドが継承する)の文書化されていないイベントがあります。

  1. ビュー:あなたのグリッドの表示
  2. がセル:セル
  3. レコードのインデックス:
  4. cellIndexクリックされたセルここでイベントパラメータですセルに関連付けられているストアレコードは
  5. 行:列のインデックス
  6. eOpts:標準イベントオプションイベント
  7. 細胞
  8. rowIndexプロパティの行

    viewConfig: { 
        listeners: { 
         beforecellmousedown: function(view, cell, cellIdx, record, row, rowIdx, eOpts){ 
          if(cellIdx === indexOfLastColumnInGrid){ 
           return false; 
          } 
         } 
        } 
    } 
    

    セルと行の両方のインデックスはゼロベースです:

ですから、おそらくこのような何かをしようとするだろう。

+0

ありがとうエリック!私はそれを試してみましょう! – user1245146

1
listeners: { 
    beforecellmousedown: function(view, cell, cellIdx, record, row, rowIdx, eOpts) { 
     if (String(eOpts.getTarget()) == '[object HTMLButtonElement]') { 
      return false; 
     } 
    } 
} 

ありがとうエリック。これは私の最終的な解決策です!

関連する問題