Использовать sortCompareFunction
Элемент управления AdvancedDataGrid использует эту функцию для сортировки элементов коллекции поставщика данных.Сигнатура функции функции обратного вызова принимает два параметра и имеет следующий вид:
mySortCompareFunction(obj1:Object, obj2:Object):int
obj1 - Элемент данных для сравнения.
obj2 - Другой элемент данныхсравнивать с obj1.
Функция должна возвращать значение, основанное на сравнении объектов:
- -1, если obj1 должен появляться перед obj2 в порядке возрастания.
- 0, если obj1 = obj2.
- 1, если obj1 должен появляться после obj2 в порядке возрастания.
<mx:AdvancedDataGridColumn sortCompareFunction="mySort"
dataField="colData"/>
Попробуйте следующую функцию сравнения сортировки.
public function mySort(obj1:Object, obj2:Object):int
{
var s1:String = obj1.colData;
var s2:String = obj2.colData;
var result:Number = s1.localeCompare(s2);
if(result != 0)
result = result > 0 ? 1 : -1;
if(s1.match(/^\d/))
{
if(s2.match(/^\d/))
return result;
else
return 1;
}
else if(s2.match(/^\d/))
return -1;
else
return result;
}
Проверяет первый символ строк и толкает те, которые начинаются с цифры вниз, в порядке сортировки.Он использует localeCompare для сравнения двух строк, если они обе начинаются с букв или цифр - в противном случае он говорит, что строка, начинающаяся с буквы, должна предшествовать цифре.Таким образом, abc
будет предшествовать 123
, но a12
будет по-прежнему предшествовать abc
.
Если вам нужен совершенно другой вид, в котором буквы всегда предшествуют числам, независимо от их положения в строке, вам придется написать один с нуля - String :: charCodeAt может быть хорошимместо для начала.