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

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

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

Большое спасибо заранее!

Ответы [ 3 ]

9 голосов
/ 02 марта 2012

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

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

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

  1. просмотр: вид вашей сетки
  2. ячейка: ячейка, на которую нажали
  3. cellIndex: индекс ячейки
  4. запись: запись магазина, связанная с ячейкой
  5. строка: строка ячейки
  6. rowIndex: индекс строки
  7. eOpts: стандартное событие опция события

Так что вы, вероятно, попробуете что-то вроде этого:

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

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

1 голос
/ 03 марта 2012
listeners: {
    beforecellmousedown: function(view, cell, cellIdx, record, row, rowIdx, eOpts) {
        if (String(eOpts.getTarget()) == '[object HTMLButtonElement]') {
            return false;
        }
    }
}

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

0 голосов
/ 02 марта 2012
...