2012-03-02 29 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。这是我最终的解决方案!