ExtJS 4-网格-禁用特定列的行选择

ExtJS 4-网格-禁用特定列的行选择,extjs,checkbox,grid,extjs4,selection,Extjs,Checkbox,Grid,Extjs4,Selection,我已经用ExtJS4创建了一个网格。selection.CheckboxModel实现为。这意味着无论您在何处单击特定行,都会选中/取消选中该行。现在我想在最后一列上禁用此选择,因为它包含自定义按钮。(如果单击按钮,我不想选择行) 你知道怎么做吗 非常感谢 阅读本文 我希望它能帮助您。这实际上是一个棘手的小问题,如果只是因为缺少Sencha文档的话 CheckboxModel确实有一个从Ext.selection.RowModel继承的beforeselect事件。但是,没有简单的方法可以获得列

我已经用ExtJS4创建了一个网格。selection.CheckboxModel实现为。这意味着无论您在何处单击特定行,都会选中/取消选中该行。现在我想在最后一列上禁用此选择,因为它包含自定义按钮。(如果单击按钮,我不想选择行)

你知道怎么做吗

非常感谢

阅读本文
我希望它能帮助您。

这实际上是一个棘手的小问题,如果只是因为缺少Sencha文档的话

CheckboxModel确实有一个从
Ext.selection.RowModel
继承的
beforeselect
事件。但是,没有简单的方法可以获得列索引,因为坦率地说,这就是RowModel的要点

但是,在
Ext.view.Table
(网格将继承)中有一个名为
beforecellmousedown
的未记录事件。以下是事件参数:

  • 视图:网格的视图
  • 单元格:单击的单元格
  • cellIndex:单元格的索引
  • 记录:与单元格关联的存储记录
  • 行:单元格的行
  • rowIndex:行的索引
  • eOpts:标准事件选项事件
  • 因此,您可能会尝试以下方法:

    viewConfig: {
        listeners: {
            beforecellmousedown: function(view, cell, cellIdx, record, row, rowIdx, eOpts){
                if(cellIdx === indexOfLastColumnInGrid){
                    return false;
                }
            }
        }
    }
    
    单元格和行索引都是从零开始的

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

    塔克斯·埃里克。这就是最终的解决方案

    在“beforeselect”内,如何检查单击了哪个列?谢谢Eric!我要试试看!