Я понял это сам.Я не уверен, если это ошибка в спарк DataGrid.Следующее, безусловно, взломано и не чисто.
В функции grid_mouseDownHandler
в файле DataGrid.as
есть строка:
const columnIndex:int = isCellSelection ? event.columnIndex : -1;
Thisстрока заставляет columnIndex
быть установленным как -1
, если selectionMode
из DataGrid
отличается от GridSelectionMode.SINGLE_CELL
или GridSelectionMode.MULTIPLE_CELLS
.Как я уже упоминал в исходном вопросе, мне нужно, чтобы в моей сетке данных был selectionMode
из GridSelectionMode.MULTIPLE_ROWS
.
. Я переклассифицировал DataGrid и повторно внедрил grid_mouseDownHandler
(в основном, скопировал всефункция).Я изменил только приведенную выше строку, чтобы всегда присваивать columnIndex
event.columnIndex
.
(мне также пришлось скопировать еще несколько функций, на которые ссылается grid_mouseDownHandler
, в мой подкласс, потому что эти функциибыли защищены или mx_internal. (toggleSelection
, extendSelection
, isAnchorSet
)
Затем в обработчике события selectionChanging
я мог бы просто сделать следующее:
if( 2 == event.selectionChange.columnIndex )
{
event.preventDefault();
}
Я понимаю, что это не чистое решение, но это лучшее, что я мог придумать. Может быть, кто-то может предложить лучшее решение?