Я столкнулся с той же проблемой, и единственное решение, которое я нашел, было переопределить DataGrid и создать собственный.
Вот этот класс:
public class DataGridCustomSort extends DataGrid
{
public function DataGridCustomSort()
{
super();
addEventListener(DataGridEvent.HEADER_RELEASE,
headerReleaseHandlerCustomSort,
false, EventPriority.DEFAULT_HANDLER);
}
public function headerReleaseHandlerCustomSort(event:DataGridEvent):void {
mx_internal::sortIndex = event.columnIndex;
if (mx_internal::sortDirection == null || mx_internal::sortDirection == "DESC")
mx_internal::sortDirection = "ASC";
else
mx_internal::sortDirection = "DESC";
placeSortArrow();
}
}
Вы должны специально вызывать метод placeSortArrow (), когда получаете событие HEADER_RELEASE и задаете индекс столбца и информацию о направлении.