2012-03-02 136 views
5

我創建了一個帶有extjs 4的網格。selection.CheckboxModel被實現。這意味着無論您單擊哪一行,該行都會被選中/取消選擇。現在我想在最後一列禁用此選擇,因爲它包含自定義按鈕。 (如果點擊一個按鈕,我不想選擇該行)。ExtJS 4 - Grid - 禁用特定列的rowselection

任何想法的如何做到這一點?

非常感謝提前!

回答

9

這實際上是一個棘手的小問題,如果僅僅是因爲Sencha文檔缺乏。

CheckboxModel確實有一個從Ext.selection.RowModel繼承的beforeselect事件。但是,坦白地說,沒有簡單的方法來獲得列索引,這就是RowModel的要點。

然而,有一個在Ext.view.Table無證事件(該網格將繼承)呼籲beforecellmousedown。這裏的事件參數:

  1. 觀點:被點擊
  2. cellIndex的細胞:網格
  3. 細胞的視細胞的指數
  4. 記錄:與細胞
  5. 相關的商店記錄
  6. 行:標準事件選項事件
  7. :行
  8. eOpts指數:細胞
  9. rowIndex位置的行

所以,你可能會嘗試這樣的事:

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

兩個單元格和行索引是從零開始的。

+0

謝謝Eric!我會試一試! – user1245146 2012-03-02 20:16:15

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

Thanx Eric。這是我最終的解決方案!