各要素にイベントが関連付けられた次のコードがあります。ラジオボタンをクリックすると、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 列目) として 2 つのラジオボタンがあります。
|-----------------------------------------------------------------------------|
| | | | |
| #1 cell | #2 cell | #3 cell | (o) Radiobutton1 (o) Radiobutton2 |
| | | | |
|-----------------------------------------------------------------------------|
問題は、行を削除すると、データが表示から削除され、正常に動作することです。しかし、新しいものを追加すると、ラジオボタンは Flex によって再利用され、新しいラジオボタンがどの行にあるかを知ることができません (Flex がそれらを再利用し、3 つの行を削除して新しい行を追加すると、ラジオボタン)この新しい行に属しているボタンは、削除された最後の行または別の行に属している可能性があります; それを保証することは不可能です)。
だから、私は思った:「OKフラン、おそらくitemClick
Datagridにイベントリスナーを追加できます。ユーザーがラジオボタンをクリックすると、ラジオボタンが最近クリックされた行を知ることができます(itemClick
ハンドラーのため)」 . しかし、Flex は私が期待した順序でハンドラーを実行しなかったので、私は今本当に立ち往生しています。
onRollOver
代わりにイベントを試してonItemClick
いますが、うまくいきますが、常にではありません。