Пакет | mx.collections |
Класс | public class Sort |
Наследование | Sort EventDispatcher Object |
Реализует | ISort |
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 3 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
Начиная с Flex 4.5, Adobe рекомендует вместо этого класса использовать класс spark.collections.Sort. |
Предоставляет информацию о сортировке, необходимую для сортировки в существующем представлении (интерфейс ICollectionView или класс, реализующий интерфейс). После назначения экземпляра сортировки свойству представления
sort
следует вызвать метод представления refresh()
для применения критериев сортировки. Обычно сортировка определяется для коллекций составных элементов, т. е. для коллекций, в которых сортировка выполняется для одного или более свойств объектов коллекции. В следующем примере показано использование этого свойства:
var col:ICollectionView = new ArrayCollection();
// In the real world, the collection would have more than one item.
col.addItem({first:"Anders", last:"Dickerson"});
// Create the Sort instance.
var sort:Sort = new Sort();
// Set the sort field; sort on the last name first, first name second.
// Both fields are case-insensitive.
sort.fields = [new SortField("last",true), new SortField("first",true)];
// Assign the Sort object to the view.
col.sort = sort;
// Apply the sort to the collection.
col.refresh();
Возможны ситуации, в которых коллекция содержит простые элементы, подобные String
, Date
, Boolean
и т. д. В этом случае следует применять сортировку непосредственно к простому типу. При создании сортировки для простых элементов следует использовать отдельное поле сортировки и указать (первый) параметр name
как null
в конструкторе объектов SortField. Например:
var col:ICollectionView = new ArrayCollection();
col.addItem("California");
col.addItem("Arizona");
var sort:Sort = new Sort();
// There is only one sort field, so use a null
// first parameter.
sort.fields = [new SortField(null, true)];
col.sort = sort;
col.refresh();
В реализациях Flex интерфейса ICollectionView все элементы извлекаются из удаленного местоположения перед выполнением сортировки. При использовании подкачки страниц с сортированным списком к удаленной коллекции перед извлечением данных следует применить сортировку.
По умолчанию этот класс Sort не обеспечивает правильную языковую сортировку для строк. Для получения информации об этом типе сортировки см. описание классов spark.collections.Sort
и spark.collections.SortField
.
The <mx:Sort>
tag has the following attributes:
<mx:Sort Properties compareFunction="Internal compare function" fields="null" unique="false | true" />
In case items have inconsistent data types or items have complex data types, the use of the default built-in compare functions is not recommended. Inconsistent sorting results may occur in such cases. To avoid such problem, provide a custom compare function and/or make the item types consistent.
Just like any other AdvancedStyleClient
-based classes,
the Sort
and SortField
classes do not have a
parent-child relationship in terms of event handling. Locale changes in a
Sort
instance are not dispatched to its SortField
instances automatically. The only exceptional case is the internal default
SortField
instance used when no explicit fields are provided.
In this case, the internal default SortField
instance follows
the locale style that the owner Sort
instance has.
Свойство MXML по умолчаниюfields
Связанные элементы API
Свойство | Определено | ||
---|---|---|---|
compareFunction : Function
Метод, используемый для сравнения элементов при сортировке. | Sort | ||
constructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта. | Object | ||
fields : Array
Массив объектов ISortField, указывающий поля для сравнения. | Sort | ||
unique : Boolean
Указывает, должна ли сортировка быть уникальной. | Sort |
Метод | Определено | ||
---|---|---|---|
Sort()
Конструктор. | Sort | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Регистрирует объект прослушивателя события на объекте EventDispatcher для получения прослушивателем уведомления о событии. | EventDispatcher | ||
Посылает событие в поток событий. | EventDispatcher | ||
findItem(items:Array, values:Object, mode:String, returnInsertionIndex:Boolean = false, compareFunction:Function = null):int
Поиск указанного объекта в пределах указанного массива (или места вставки при запросе); при обнаружении возвращается индекс, в противном случае – -1. | Sort | ||
Проверяет, имеет ли объект EventDispatcher прослушиватели, зарегистрированные для определенного типа события. | EventDispatcher | ||
Показывает, определено ли заданное свойство для объекта. | Object | ||
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра. | Object | ||
Возвращает значение, показывающее используется ли указанное свойство для управления сортировкой. | Sort | ||
Показывает наличие заданного свойства и его перечисляемость. | Object | ||
Удаляет прослушиватель из объекта EventDispatcher. | EventDispatcher | ||
Проходит через массив fields и вызывает reverse() для каждого объекта ISortField в массиве. | Sort | ||
Задает доступность динамического свойства для операций цикла. | Object | ||
Применяет текущую сортировку к указанному массиву (не копии). | Sort | ||
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали. | Object | ||
Возвращает строковое представление заданного объекта. | Object | ||
Возвращает элементарное значение заданного объекта. | Object | ||
Проверяет, зарегистрирован ли прослушиватель события для указанного типа события с данным объектом EventDispatcher или любым его предшественником. | EventDispatcher |
Константа | Определено | ||
---|---|---|---|
ANY_INDEX_MODE : String = "any" [статические]
При нахождении возвращает индекс любого соответствующего элемента. | Sort | ||
FIRST_INDEX_MODE : String = "first" [статические]
При выполнении поиска возвращает индекс первого совпадающего элемента. | Sort | ||
LAST_INDEX_MODE : String = "last" [статические]
При выполнении поиска возвращает индекс последнего совпадающего элемента. | Sort |
compareFunction | свойство |
compareFunction:Function
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 3 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
Метод, используемый для сравнения элементов при сортировке. При указании этого свойства Flex игнорирует любые свойства compareFunction
, которые указаны в объектах ISortField
, используемых в этом классе.
Функция сравнения должна иметь следующую подпись:
function [name](a:Object, b:Object, fields:Array = null):int
Эта функция должна возвращать следующее значение:
- -1, если в отсортированной последовательности
объект А
должен предшествоватьобъекту B
. - 0, если
объект А
совпадает собъектом B
. - 1, если в отсортированной последовательности
объект А
должен следовать заобъектом B
.
Для возврата к внутренней функции сравнения установите значение null
.
Массив fields
указывает поля объекта для сравнения. Как правило, алгоритм сравнивает свойства до тех пор, пока не будет исчерпан список полей или не будет возвращено ненулевое значение. Например:
function myCompare(a:Object, b:Object, fields:Array = null):int
{
var result:int = 0;
var i:int = 0;
var propList:Array = fields ? fields : internalPropList;
var len:int = propList.length;
var propName:String;
while (result == 0 && (i < len))
{
propName = propList[i];
result = compareValues(a[propName], b[propName]);
i++;
}
return result;
}
function compareValues(a:Object, b:Object):int
{
if (a == null && b == null)
return 0;
if (a == null)
return 1;
if (b == null)
return -1;
if (a < b)
return -1;
if (a > b)
return 1;
return 0;
}
Значение по умолчанию представляет собой внутреннюю функцию сравнения, которая может выполнять сравнение строк, чисел или дат в восходящем или нисходящем порядке. Собственную функцию следует указывать только в том случае, если необходим пользовательский алгоритм сравнения. Обычно он применяется только в том только случае, если в отображении используется вычисленное поле.
Также для каждого поля сортировки можно указать отдельную функцию сравнения с помощью используемого в классе ISortField
свойства compareFunction
. При этом для одних полей используется сравнение по умолчанию, а для других - пользовательское сравнение.
Реализация
public function get compareFunction():Function
public function set compareFunction(value:Function):void
fields | свойство |
fields:Array
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 3 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
Массив
объектов ISortField
, указывающих поля для сравнения. Порядок объектов ISortField в массиве определяет приоритетный порядок полей при сортировке. Устройство сравнения сортировки по умолчанию проверяет поля сортировки в порядке массива, пока не определит порядок сортировки для двух сравниваемых полей.
Значением по умолчанию является null.
Это свойство можно использовать в качестве источника для связывания данных. При изменении этого свойства отправляется событие fieldsChanged
.
Реализация
public function get fields():Array
public function set fields(value:Array):void
Связанные элементы API
unique | свойство |
unique:Boolean
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 3 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
Указывает, должна ли сортировка быть уникальной. Уникальная сортировка завершается ошибкой, если какое-либо значение или объединенное значение, указанные в полях, перечисленных в свойствах полей, приводят к неопределенной или неуникальной последовательности сортировки, т. е. если два и более элемента имеют идентичные значения полей сортировки. Если сортировка не является уникальной, вызывается ошибка. Логика сортировки использует значение свойства unique
только в случае, когда поля сортировки указаны явным образом. Если ни одно из полей сортировки не указано явным образом, ошибка не выводится даже при наличии элементов с идентичными значениями.
Значением по умолчанию является false.
Реализация
public function get unique():Boolean
public function set unique(value:Boolean):void
Sort | () | Конструктор |
public function Sort()
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 3 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
Конструктор.
Создает новую сортировку без установленных полей и пользовательского устройства сравнения.
findItem | () | метод |
public function findItem(items:Array, values:Object, mode:String, returnInsertionIndex:Boolean = false, compareFunction:Function = null):int
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 3 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
Поиск указанного объекта в пределах определенного массива (или места вставки при запросе); при обнаружении возвращается индекс, в противном случае – -1. Используемые в классе ListCollectionView
методы findxxx()
применяют этот способ для определения запрашиваемого элемента. Как правило, проще использовать эти функции вместо findItem()
для поиска данных в объектах на основе ListCollectionView
. Метод findItem()
можно вызвать непосредственно при создании класса, например новой реализации ICollectionView
, который поддерживает сортировку. Перед вызовом этой функции необходимо выполнить сортировку входного массива элементов. В противном случае эта функция не сможет правильно определить указанное значение.
Параметры
items:Array — Массив, в пределах которого выполняется поиск.
| |||||||
values:Object — Объект, содержащий свойства для поиска (или сам объект для поиска). Объект должен состоять из пар «имя/значение поля», в которых имена полей определяются свойством fields в порядке их использования в этом свойстве. Необязательно перечислять все поля свойства fields , однако поле не может быть пропущено в последовательности. Поэтому если в свойстве fields перечисляются три поля, то можно указать только первое и второе поля, но нельзя указать первое и третье, пропустив второе.
| |||||||
mode:String — Строка, содержащая тип нахождения для выполнения. Допустимые значения:
| |||||||
returnInsertionIndex:Boolean (default = false ) — Если метод не находит элемент, идентифицируемый параметром values , и этот параметр равен true , метод findItem() возвращает место вставки для значений, которое в сортированной последовательности является точкой вставки элемента.
| |||||||
compareFunction:Function (default = null ) — функция устройства сравнения для использования при нахождении элемента. Если этот параметр не определен или указано значение null , функция findItem() использует функцию compare, определенную ISort в свойстве compareFunction экземпляра, с передачей данных в массив полей, которые определены объектом значений и текущим SortFields . Если указано ненулевое значение, функция findItem() использует его как функцию compare. Для функции, передаваемой как compareFunction , необходимо указать следующую подпись: function myCompareFunction(a:Object, b:Object):int . Обратите внимание, что в отличие от функции compare для свойства ISort.compareFunction() отсутствует третий аргумент.
|
int — int Индекс в массиве найденного элемента. Если параметр returnInsertionIndex равен false и элемент не найден, возвращает -1. Если параметр returnInsertionIndex равен true и элемент не найден, возвращает индекс точки в сортированном массиве, где следует вставить значения.
|
propertyAffectsSort | () | метод |
public function propertyAffectsSort(property:String):Boolean
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 3 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
Возвращает значение, показывающее используется ли указанное свойство для управления сортировкой. Если сортировка использует пользовательское средство сравнения, то функция не может определить окончательный ответ и всегда возвращает значение true
.
Параметры
property:String — Имя тестируемого поля.
|
Boolean — Может ли значение свойства влиять на результат сортировки. Если при сортировке используется функция compareFunction, установленная по умолчанию, метод возвращает значение true , если параметр property определяет поле сортировки. Если сортировка или любой ISortField использует неизвестное пользовательское устройство сравнения, возвращается значение true .
|
reverse | () | метод |
public function reverse():void
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 3 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
Проходит через массив fields
и вызывает reverse()
для каждого объекта ISortField
в массиве. Поле по нисходящей теперь становится полем по восходящей и наоборот.
Примечание. ICollectionView
не обновляется автоматически при изменении объектов в массиве fields
; для обновления представления следует вызвать метод refresh()
.
sort | () | метод |
public function sort(items:Array):void
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 3 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
Применяет текущую сортировку к указанному массиву (не копии). Для предотвращения изменения массива следует создать копию в параметре items
.
Реализации ICollectionView
в Flex автоматически вызывают метод sort
и обеспечивают выполнение сортировки в копии основных данных.
Параметры
items:Array — Массив сортируемых элементов.
|
ANY_INDEX_MODE | Константа |
public static const ANY_INDEX_MODE:String = "any"
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 3 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
При нахождении возвращает индекс любого соответствующего элемента.
FIRST_INDEX_MODE | Константа |
public static const FIRST_INDEX_MODE:String = "first"
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 3 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
При выполнении поиска возвращает индекс первого совпадающего элемента.
LAST_INDEX_MODE | Константа |
public static const LAST_INDEX_MODE:String = "last"
Язык версии: | ActionScript 3.0 |
Версия продукта: | Flex 3 |
Версии среды выполнения: | Flash Player 9, AIR 1.1 |
При выполнении поиска возвращает индекс последнего совпадающего элемента.
Tue Jun 12 2018, 11:34 AM Z