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