Je l'ai compris moi-même. Je ne suis pas sûr que ce soit un bug dans l'étincelle DataGrid. Ce qui suit est définitivement un hack et pas propre.
Dans la fonction grid_mouseDownHandler
dans le fichier DataGrid.as
, il y a une ligne:
const columnIndex:int = isCellSelection ? event.columnIndex : -1;
Cette ligne est à l'origine du columnIndex
à définir comme -1
si le selectionMode
du DataGrid
est autre chose que GridSelectionMode.SINGLE_CELL
ou GridSelectionMode.MULTIPLE_CELLS
. Comme je l'ai mentionné dans la question initiale, j'ai besoin de mon datagrid pour avoir un selectionMode
de GridSelectionMode.MULTIPLE_ROWS
.
J'ai sous-classé le DataGrid et ré-implémenté le grid_mouseDownHandler
(en gros copié-collé toute la fonction). J'ai changé seulement la ligne ci-dessus pour toujours attribuer le columnIndex
à event.columnIndex
.
(je l'avais aussi de copier quelques autres fonctions qui ont été citées par le grid_mouseDownHandler
à mon sous-classe parce que ces fonctions ont été protégées ou mx_internal. (toggleSelection
, extendSelection
, isAnchorSet
)
Ensuite, en cas selectionChanging
gestionnaire, je pouvais faire ce qui suit:
if(2 == event.selectionChange.columnIndex)
{
event.preventDefault();
}
Je me rends compte que ce n'est pas une solution propre, mais il est le meilleur que je coul d penser à. Peut-être que quelqu'un peut proposer une meilleure solution?