【问题标题】:ExtJS 4 - Grid - Disable rowselection for specific columnExtJS 4 - 网格 - 禁用特定列的行选择
【发布时间】:2012-03-02 13:26:25
【问题描述】:

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

你知道怎么做吗?

提前非常感谢!

【问题讨论】:

    标签: extjs checkbox grid extjs4 selection


    【解决方案1】:

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

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

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

    1. 视图:您的网格视图
    2. 单元格:被点击的单元格
    3. cellIndex:单元格的索引
    4. 记录:与单元格关联的商店记录
    5. row: 单元格所在的行
    6. rowIndex:行的索引
    7. eOpts:标准事件选项事件

    所以你可能会尝试这样的事情:

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

    单元格和行索引都是从零开始的。

    【讨论】:

    • 谢谢埃里克!我试试看!
    【解决方案2】:
    listeners: {
        beforecellmousedown: function(view, cell, cellIdx, record, row, rowIdx, eOpts) {
            if (String(eOpts.getTarget()) == '[object HTMLButtonElement]') {
                return false;
            }
        }
    }
    

    感谢埃里克。这是最终的解决方案!

    【讨论】:

      【解决方案3】:

      【讨论】:

      • 在“beforeselect”内,我如何检查点击了哪一列?
      猜你喜欢
      • 1970-01-01
      • 2011-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多