Flex 4.5 Spark DataGrid - 在selectionChange处理程序中单击了Detect列

时间:2011-04-23 14:50:31

标签: actionscript-3 flex datagrid flex4.5 flex-spark

我有一个带selectionMode="multipleRows"的spark数据网格。

我在datagrid中有三列。

当用户的点击落在行的第三列时,我不希望行选择。

只有在单击前两列中的一列时才会进行行选择。

我如何实现这一目标?数据网格有一个selectionChanging事件,但处理程序中收到的GridSelectionEvent对象似乎没有提供有关发生点击的列的任何信息。

谢谢!

1 个答案:

答案 0 :(得分:0)

我自己想出来了。我不确定这是否是Spark DataGrid中的错误。以下绝对是黑客而且不干净。

grid_mouseDownHandler文件的DataGrid.as函数中,有一行:

const columnIndex:int = isCellSelection ? event.columnIndex : -1;

如果columnIndex的{​​{1}}不是-1selectionMode,则此行会导致DataGrid设置为GridSelectionMode.SINGLE_CELL }。正如我在原始问题中提到的,我需要我的数据网格GridSelectionMode.MULTIPLE_CELLS selectionMode

我对DataGrid进行了细分并重新实现了GridSelectionMode.MULTIPLE_ROWS(基本上是复制粘贴整个函数)。我只更改了以上行,始终将grid_mouseDownHandler分配给columnIndex

(我还必须将event.columnIndex引用的更多函数复制到我的子类中,因为这些函数是受保护的或mx_internal。(grid_mouseDownHandlertoggleSelection,{ {1}})

然后,在extendSelection事件处理程序中,我可以执行以下操作:

isAnchorSet

我意识到这不是一个干净的解决方案,但它是我能想到的最好的解决方案。也许有人可以建议更好的解决方案?