我有以下代码,其中包含与每个元素关联的事件。当我单击单选按钮时,onItemClick
事件所属的事件在事件table
之后执行onSelect
。我认为这是由于table
是父母和rb2
孩子。
private function onItemClick(e:ListEvent):void {
selectedRow = parseInt(e.itemRenderer.data.Id)-1;
trace("selectedRow: "+selectedRow);
}
public function selectPoint(event:MouseEvent):void{
trace("selectPoint");
}
<mx:DataGrid id="table" dataProvider="{listCol}"
itemClick="onItemClick(event)">
<mx:columns>
<mx:DataGridColumn id="posibilidades" rendererIsEditor="true"
editorDataField="selected" headerText="Posibilidades" width="100" textAlign="center"
draggable="false" editable="false" resizable="false" sortable="false">
<mx:itemRenderer>
<mx:Component>
<mx:RadioButton name="rb2" label="Punto 2" fontSize="13" enabled="false"
groupName="_rb" value="1" textAlign="center"
preinitialize="event.target.styleName='rbstyle'"
click="outerDocument.selectPoint(event)"
creationComplete="outerDocument.rbCreated(event)"/>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>
我需要以相反的顺序执行这两个事件:onItemClick
,然后onSelect
.
我怎样才能执行onItemClick
之前onSelect
?我读了一些关于与 相关的优先级addEventListener
,但它不起作用,因为事件是针对不同的组件的。
编辑:我将尝试解释我的问题以及为什么我在 Flex 中做这些奇怪的事情。
我有一个 Datagrid 组件,它由一个名为“添加度量”的按钮动态更新。这个 Datagrid 有 4 列;添加到此 Datagrid 的每个度量都有作为最后一个单元格(在第 4 列)两个单选按钮。
|-----------------------------------------------------------------------------|
| | | | |
| #1 cell | #2 cell | #3 cell | (o) Radiobutton1 (o) Radiobutton2 |
| | | | |
|-----------------------------------------------------------------------------|
问题是:当我删除一行时,数据将从显示中删除并且工作正常。但是当我添加一个新单选按钮时,Flex 会重复使用单选按钮,我无法知道新单选按钮在哪一行(如果 Flex 重复使用它们并且我删除 3 行并添加一个新单选按钮,那么单选按钮 -按钮属于这个新行,可以属于删除的最后一行,也可以属于另一行;无法保证)。
所以,我想:“好的,弗兰,也许你可以itemClick
在 Datagrid 中添加一个事件监听器,当用户点击单选按钮时,你可以知道最近点击的单选按钮在哪一行(因为itemClick
处理程序)” . 但是 Flex 没有按照我预期的顺序执行处理程序,所以我现在真的被卡住了。
我正在尝试onRollOver
事件而不是onItemClick
并且效果很好,但并非总是如此。