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 )"
        />


Reply via email to