Ok, I have a workaround for this plus I think this message was more
flexcoders-like ( my intention was to send it there )
Sorry and feel free to delete it from the list.
Alberto
Alberto Albericio escribió:
>
> Hi all,
>
> Im running into an strange situation with Datagrids and sorts...
>
> Imagine I have just selected a datagrid's item...
>
> Whenever I click on the datagrid's header ( not on the sort arrow, this
> is important ), I can calculate ( cool! ) the NEW index of the
> datagrid's selectedItem on the itemClick event. Clicking like this
> generates 2 events: first headerRelease event and then itemClick event.
>
> But, clicking ON the sort arrow of the header, it just generates one
> single headerRelease event so if I try to calculate the NEW index of the
> datagrid's selectedItem I get a wrong index number since the sort on the
> datagrid is not valid ( yet ). The sort executes somewhere after
> dispatching this event.
>
> So the question is: how can I calculate the NEW index of the datagrid's
> selectedItem after clicking ON the sort arrow of a datagrid's header?
>
> Here's an example where you can experiment this:
>
> <mx:Script>
> <![CDATA[
> import mx.events.DataGridEvent;
> import mx.events.ListEvent;
> import mx.collections.ArrayCollection;
>
> [Bindable]
> private var dp: ArrayCollection = new ArrayCollection( [
> {name:"David", data: 1 },{name:"Joe", data: 2 },{name:"Paul", data: 3
> },{name:"John", data: 4 } ] );
>
> private function handleItemClick( event: ListEvent ): void
> {
> if ( event.target.selectedItem ) {
> var itemIndex: Number = dp.getItemIndex(
> event.target.selectedItem );
> trace("Click Index " + itemIndex );
> }
> }
>
> private function handleHeaderClick( event: DataGridEvent ): void
> {
> if ( event.target.selectedItem ) {
> var itemIndex: Number = dp.getItemIndex(
> event.target.selectedItem );
> trace("Header Index " + itemIndex );
> }
> }
>
> ]]>
> </mx:Script>
>
> <mx:DataGrid
> id="myDg"
> width="240"
> dataProvider="{ dp }"
> itemClick="handleItemClick( event )"
> headerRelease="handleHeaderClick( event )"
> />
>
>