В начале всё просто - имеется DataGrid с определенным числом колонок с данными. Данные есть числовые, текстовые, а есть комбинированные, например "Возраст": "18-65".
Для каких колонок необходимо иметь 2 возможные сортировки: по минимальному значению (18) или максимальному (65)
Для корректной сортировки таких я написал обработчик. Для того, чтобы определить по какому значению сортировать, имеются 2 checkBox-а: мин и макс соответственно

Код AS3:
function aaa(a:Object,b:Object):int {
switch (dg1.getColumnAt(dg1.sortIndex).headerText) {
case "Возраст" :
if (age_min.selected) {
var i=sort_chooser(a["Возраст"].split("-")[0],b["Возраст"].split("-")[0]);
} else if (age_max.selected) {
i=sort_chooser(a["Возраст"].split("-")[1],b["Возраст"].split("-")[1]);
}
break;
default :
i=sort_chooser(a[dg1.getColumnAt(dg1.sortIndex).headerText],b[dg1.getColumnAt(dg1.sortIndex).headerText]);
break;
}
return i;
}
Здесь шаблонная функция непосредственного сравнения

Код AS3:
private function sort_chooser(a:int,b:int):int {
if (a>b) {
return 1;
} else if (a == b) {
return 0;
} else {
return -1;
}
}
Сортировка работает. Но задумка более сложная. Хочу сделать многоуровневую сортировку, как sortOn([1,2,...,n],[1,2,...,n]).
В связи с этим появилось несколько вопросов. Как отловить событие окончания сортировки в столбце после отработки пользовательского sortCompareFunction? Как ни пытался, ничего не получилось.
Есть ли другие варианты осуществить задуманное?
