ExtJS 4 - Grid - отключить выбор строки для определенного столбца
Я создал сетку с extjs 4. Selection.CheckboxModel реализован в. Это означает, что строка выбирается / отменяется, где бы вы ни щелкнули по конкретной строке. Теперь я хочу отключить этот выбор в последнем столбце, поскольку он содержит пользовательские кнопки. (Я не хочу выбирать строку, если нажата кнопка).
Есть идеи как это сделать?
Спасибо заранее!
3 ответа
Это на самом деле небольшая проблема, хотя бы потому, что у Sencha нет документации.
CheckboxModel действительно имеет beforeselect
событие, унаследованное от Ext.selection.RowModel
, Однако нет простого способа получить индекс столбца, потому что, честно говоря, в этом и заключается суть RowModel.
Тем не менее, есть недокументированное событие в Ext.view.Table
(который ваша сетка унаследует) называется beforecellmousedown
, Вот параметры события:
- view: вид вашей сетки
- ячейка: ячейка, на которую щелкнули
- cellIndex: индекс ячейки
- запись: запись магазина, связанная с ячейкой
- row: строка ячейки
- 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;
}
}
}
Спасибо, Эрик. Это я окончательное решение!
Прочитайте эту статью http://www.learnsomethings.com/2012/01/12/stopping-a-checkbox-from-allowing-select-in-an-extjs-4-grid-checkbox-column-via-the-ext-selection-checkboxmodel/ Надеюсь, это поможет вам.