我有一个带selectionMode="multipleRows"
的spark数据网格。
我在datagrid中有三列。
当用户的点击落在行的第三列时,我不希望行选择。
只有在单击前两列中的一列时才会进行行选择。
我如何实现这一目标?数据网格有一个selectionChanging
事件,但处理程序中收到的GridSelectionEvent
对象似乎没有提供有关发生点击的列的任何信息。
谢谢!
答案 0 :(得分:0)
我自己想出来了。我不确定这是否是Spark DataGrid中的错误。以下绝对是黑客而且不干净。
在grid_mouseDownHandler
文件的DataGrid.as
函数中,有一行:
const columnIndex:int = isCellSelection ? event.columnIndex : -1;
如果columnIndex
的{{1}}不是-1
或selectionMode
,则此行会导致DataGrid
设置为GridSelectionMode.SINGLE_CELL
}。正如我在原始问题中提到的,我需要我的数据网格GridSelectionMode.MULTIPLE_CELLS
selectionMode
。
我对DataGrid进行了细分并重新实现了GridSelectionMode.MULTIPLE_ROWS
(基本上是复制粘贴整个函数)。我只更改了以上行,始终将grid_mouseDownHandler
分配给columnIndex
。
(我还必须将event.columnIndex
引用的更多函数复制到我的子类中,因为这些函数是受保护的或mx_internal。(grid_mouseDownHandler
,toggleSelection
,{ {1}})
然后,在extendSelection
事件处理程序中,我可以执行以下操作:
isAnchorSet
我意识到这不是一个干净的解决方案,但它是我能想到的最好的解决方案。也许有人可以建议更好的解决方案?