ExtJS 4 - Grid - отключить выбор строки для определенного столбца

Я создал сетку с extjs 4. Selection.CheckboxModel реализован в. Это означает, что строка выбирается / отменяется, где бы вы ни щелкнули по конкретной строке. Теперь я хочу отключить этот выбор в последнем столбце, поскольку он содержит пользовательские кнопки. (Я не хочу выбирать строку, если нажата кнопка).

Есть идеи как это сделать?

Спасибо заранее!

3 ответа

Решение

Это на самом деле небольшая проблема, хотя бы потому, что у Sencha нет документации.

CheckboxModel действительно имеет beforeselect событие, унаследованное от Ext.selection.RowModel, Однако нет простого способа получить индекс столбца, потому что, честно говоря, в этом и заключается суть RowModel.

Тем не менее, есть недокументированное событие в Ext.view.Table (который ваша сетка унаследует) называется beforecellmousedown, Вот параметры события:

  1. view: вид вашей сетки
  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;
            }
        }
    }
}

И индексы ячеек и строк начинаются с нуля.

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

Спасибо, Эрик. Это я окончательное решение!

Другие вопросы по тегам