Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
В классе DataProvider предусмотрены методы и свойства, которые позволяют запрашивать и модифицировать данные в любом компоненте, основанном на списке (например, List, DataGrid, TileList и ComboBox).
Поставщик данных — это линейная коллекция элементов, которая служат источником данных (например, массив). Каждый элемент в поставщике данных является объектом или объектом XML, содержащим одно или несколько полей данных. Элементы, которые содержатся в поставщике данных, можно вызвать, указав их индекс, при помощи метода DataProvider.getItemAt()
.
Посмотреть примеры
length:uint
[только для чтения]
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
Число элементов, содержащихся в поставщике данных.
Реализация public function get length():uint
Пример В следующем примере создается экземпляр компонента List, а размер списка изменяется, исходя из количества элементов в поставщике данных:
import fl.controls.List;
import fl.data.DataProvider;
var dp:DataProvider = new DataProvider();
dp.addItem({label:"Item 1"});
dp.addItem({label:"Item 2"});
dp.addItem({label:"Item 3"});
dp.addItem({label:"Item 4"});
var myList:List = new List();
myList.dataProvider = dp;
myList.rowHeight = 35;
myList.rowCount = dp.length;
myList.move(10, 10);
addChild(myList);
public function DataProvider(value:Object = null)
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
Создает новый объект DataProvider с использованием списка, экземпляра XML или массива объектов данных в качестве источника данных.
Параметры | value:Object (default = null ) — Данные, используемые для создания DataProvider.
|
Пример В следующем примере с помощью метода
addItem()
создается новый поставщик данных:
import fl.controls.ComboBox;
import fl.data.DataProvider;
var dp:DataProvider = new DataProvider();
dp.addItem({label:"item 1a"});
dp.addItem({label:"item 2a"});
var myComboBox:ComboBox = new ComboBox()
myComboBox.dataProvider = dp;
myComboBox.move(10, 10);
addChild(myComboBox);
В следующем примере поставщик данных заполняется с помощью объекта Array:
import fl.controls.ComboBox;
import fl.data.DataProvider;
var arr:Array = new Array();
arr.push({label:"item 1b"});
arr.push({label:"item 2b"});
var dp:DataProvider = new DataProvider(arr);
var myComboBox:ComboBox = new ComboBox()
myComboBox.dataProvider = dp;
myComboBox.move(10, 10);
addChild(myComboBox);
В следующем примере поставщик данных заполняется с помощью объекта XML с атрибутами:
import fl.controls.ComboBox;
import fl.data.DataProvider;
var xml:XML = <items>
<item label="item 1c" />
<item label="item 2c" />
</items>;
var dp:DataProvider = new DataProvider(xml);
var myComboBox:ComboBox = new ComboBox()
myComboBox.dataProvider = dp;
myComboBox.move(10, 10);
addChild(myComboBox);
В следующем примере поставщик данных заполняется с помощью объекта XML с дочерними узлами:
import fl.controls.ComboBox;
import fl.data.DataProvider;
var xml:XML = <items>
<item>
<label>item 1d</label>
</item>
<item>
<label>item 2d</label>
</item>
</items>;
var dp:DataProvider = new DataProvider(xml);
var myComboBox:ComboBox = new ComboBox()
myComboBox.dataProvider = dp;
myComboBox.move(10, 10);
addChild(myComboBox);
public function addItem(item:Object):void
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
Добавляет элемент в конец набора данных, предоставляемого поставщиком данных.
Параметры
| item:Object — Элемент, добавляемый в конец текущего поставщика данных.
|
См. также
Пример В следующем примере с помощью метода
addItem()
создается новый поставщик данных:
import fl.controls.ComboBox;
import fl.data.DataProvider;
var dp:DataProvider = new DataProvider();
dp.addItem({label:"item 1a"});
dp.addItem({label:"item 2a"});
var myComboBox:ComboBox = new ComboBox()
myComboBox.dataProvider = dp;
myComboBox.move(10, 10);
addChild(myComboBox);
public function addItemAt(item:Object, index:uint):void
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
Добавляет новый элемент к поставщику данных в заданном положении индекса. Если указанный индекс превышает длину поставщика данных, то он игнорируется.
Параметры
| item:Object — Объект, содержащий данные добавляемого элемента.
|
|
| index:uint — Индекс добавления элемента.
|
Выдает | RangeError — Указанный индекс меньше 0, либо больше или равен длине поставщика данных.
|
См. также
public function addItems(items:Object):void
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
Добавляет несколько элементов в конец набора данных DataProvider и отправляет событие DataChangeType.ADD
. Элементы, которые добавляются в том порядке, в котором они указаны.
Параметры
| items:Object — Элементы, добавляемые в конец поставщика данных.
|
См. также
Пример В следующем примере используется метод
addItems()
для добавления нескольких элементов в поставщик данных:
import fl.controls.DataGrid;
import fl.controls.dataGridClasses.DataGridColumn;
import fl.data.DataProvider;
var arr:Array = [{col1:"1.A", col2:"1.B"}, {col1:"2.A", col2:"2.B"}]
var dp:DataProvider = new DataProvider();
dp.addItems(arr);
trace(dp.length); // 2
var c1:DataGridColumn = new DataGridColumn("col1");
var c2:DataGridColumn = new DataGridColumn("col2");
var myDataGrid:DataGrid = new DataGrid();
myDataGrid.addColumn(c1);
myDataGrid.addColumn(c2);
myDataGrid.dataProvider = dp;
myDataGrid.setSize(200, 160);
myDataGrid.move(10, 10);
addChild(myDataGrid);
public function addItemsAt(items:Object, index:uint):void
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
Добавляет несколько элементов в поставщик данных по указанному индексу и отправляет событие DataChangeType.ADD
.
Параметры
| items:Object — Элементы, добавляемые в поставщик данных.
|
|
| index:uint — Индекс положения вставки элементов.
|
Выдает | RangeError — Указанный индекс меньше 0, либо больше или равен длине поставщика данных.
|
См. также
public function clone():DataProvider
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
Создает копию текущего объекта DataProvider.
Возвращает public function concat(items:Object):void
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
Дописывает указанные элементы в конец набора данных, предоставляемых текущим поставщиком данных. Этот метод отправляет событие DataChangeType.ADD
.
Параметры
| items:Object — Элементы, добавляемые в поставщик данных.
|
См. также
public function getItemAt(index:uint):Object
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
Возвращает элемент из заданного положения индекса.
Параметры
| index:uint — Местоположение возвращаемого элемента.
|
Возвращает | Object — Элемент в заданном положении индекса.
|
Выдает | RangeError — Указанный индекс меньше 0, либо больше или равен длине поставщика данных.
|
См. также
public function getItemIndex(item:Object):int
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
Возвращает индекс заданного элемента.
Параметры
| item:Object — Искомый элемент.
|
Возвращает | int — Индекс возвращаемого элемента, или -1, если указанный элемент не найден.
|
См. также
public function invalidate():void
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
Аннулирует все элементы данных, содержащиеся в компоненте DataProvider, и отправляет событие DataChangeEvent.INVALIDATE_ALL
. Элементы аннулируются после внесения в них изменений; DataProvider автоматически перерисовывает аннулированный элемент.
См. также
public function invalidateItem(item:Object):void
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
Аннулирует указанный элемент. Элемент аннулируется после внесения в него изменений; DataProvider автоматически перерисовывает аннулированный элемент.
Параметры
| item:Object — Аннулируемый элемент.
|
См. также
public function invalidateItemAt(index:int):void
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
Аннулирует элемент из заданного положения индекса. Элемент аннулируется после внесения в него изменений; DataProvider автоматически перерисовывает аннулированный элемент.
Параметры
| index:int — Индекс аннулируемого элемента.
|
Выдает | RangeError — Указанный индекс меньше 0, либо больше или равен длине поставщика данных.
|
См. также
public function merge(newData:Object):void
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
Добавляет указанные данные к существующим данным, предоставляемым поставщиком данных, и удаляет все повторяющиеся элементы. Этот метод отправляет событие DataChangeType.ADD
.
Параметры
| newData:Object — Данные, объединяемые поставщиком данных.
|
См. также
public function removeAll():void
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
Удаляет все элементы из поставщика данных и отправляет событие DataChangeType.REMOVE_ALL
.
См. также
public function removeItem(item:Object):Object
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
Удаляет указанный элемент из поставщика данных и отправляет событие DataChangeType.REMOVE.
Параметры
| item:Object — Удаляемый элемент.
|
ВозвращаетСм. также
public function removeItemAt(index:uint):Object
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
Удаляет элемент в заданном положении индекса и передает событие DataChangeType.REMOVE
.
Параметры
| index:uint — Индекс удаляемого элемента.
|
ВозвращаетВыдает | RangeError — Указанный индекс меньше 0, либо больше или равен длине поставщика данных.
|
См. также
public function replaceItem(newItem:Object, oldItem:Object):Object
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
Заменяет существующий элемент новым и отправляет событие DataChangeType.REPLACE
.
Параметры
| newItem:Object — Заменяемый элемент.
|
|
| oldItem:Object — Элемент-заместитель.
|
ВозвращаетВыдает | RangeError — Элемент не удалось найти в поставщике данных.
|
См. также
public function replaceItemAt(newItem:Object, index:uint):Object
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
Заменяет элемент с указанным индексом и отправляет событие DataChangeType.REPLACE
.
Параметры
| newItem:Object — Элемент-заместитель.
|
|
| index:uint — Индекс заменяемого элемента.
|
ВозвращаетВыдает | RangeError — Указанный индекс меньше 0, либо больше или равен длине поставщика данных.
|
См. также
public function sort(... sortArgs):*
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
Сортирует элементы в поставщике данных и отправляет событие DataChangeType.SORT
.
Параметры
| ... sortArgs — Аргументы, используемые при сортировке.
|
Возвращает | * — Возвращаемое значение зависит от того, получает ли метод какие-либо аргументы. Дополнительную информацию см. в методе Array.sort() . Этот метод возвращает 0, когда свойству sortOption присваивается значение Array.UNIQUESORT .
|
См. также
public function sortOn(fieldName:Object, options:Object = null):*
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
Сортирует элементы, содержащиеся в поставщике данных, по указанному полю и отправляет событие DataChangeType.SORT
. Указанное поле может являться строкой или массивом строковых значений, определяющих несколько сортируемых полей в порядке старшинства.
Параметры
| fieldName:Object — Поле элемента, по которому выполняется сортировка. Это значение может быть строкой или массивом строковых значений.
|
|
| options:Object (default = null ) — Параметры сортировки.
|
Возвращает | * — Возвращаемое значение зависит от того, получает ли метод какие-либо аргументы. Дополнительную информацию см. в описании метода Array.sortOn() . Если свойству sortOption присвоено значение Array.UNIQUESORT , этот метод возвращает 0.
|
См. также
public function toArray():Array
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
Создает объект Array, представляющий данные, содержащиеся в поставщике данных.
Возвращает | Array — Объект Array, представляющий данные, содержащиеся в поставщике данных.
|
override public function toString():String
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
Создает строковое представление данных, содержащихся в поставщике данных.
Возвращает | String — Строковое представление данных, содержащихся в поставщике данных.
|
Тип объекта события: fl.events.DataChangeEvent
свойство DataChangeEvent.type = fl.events.DataChangeEvent.DATA_CHANGE
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
Отправляется после изменения данных.
Задает значение свойства
type
для объекта события
dataChange
.
Данное событие имеет следующие свойства.
Свойство | Значение |
---|
bubbles | false |
cancelable | false ; нет поведения по умолчанию для отмены. |
changeType | Определяет тип внесенного изменения. |
currentTarget | Объект, активно обрабатывающий объект Event с помощью прослушивателя событий. |
endIndex | Определяет индекс последнего измененного элемента. |
items | Массив, в котором перечислены измененные элементы. |
startIndex | Определяет индекс первого измененного элемента. |
target | Объект, отправивший событие. Адресат не всегда является объектом, выполняющим прослушивание события. Воспользуйтесь свойством currentTarget для доступа к объекту, прослушивающему событие. |
См. также
Тип объекта события: fl.events.DataChangeEvent
свойство DataChangeEvent.type = fl.events.DataChangeEvent.PRE_DATA_CHANGE
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9.0.28.0 |
Отправляется перед изменением данных.
Задает значение свойства
type
для объекта события
preDataChange
. Этот объект события отправляется перед тем, как в данные компонента вносятся изменения.
Данное событие имеет следующие свойства.
Свойство | Значение |
---|
bubbles | false |
cancelable | false ; нет поведения по умолчанию для отмены. |
changeType | Определяет тип вносимого изменения. |
currentTarget | Объект, активно обрабатывающий объект Event с помощью прослушивателя событий. |
endIndex | Указывает индекс последнего изменяемого элемента. |
items | Массив, в котором перечислены изменяемые элементы. |
startIndex | Указывает индекс первого изменяемого элемента. |
target | Объект, отправивший событие. Адресат не всегда является объектом, выполняющим прослушивание события. Воспользуйтесь свойством currentTarget для доступа к объекту, прослушивающему событие. |
См. также
В этом примере показано, как с помощью поставщиков данных можно сохранять содержимое нескольких сеток данных.
Чтобы применить этот пример на практике, выполните следующие действия.
- Добавьте в библиотеку компоненты Label, Button, ComboBox, TextInput и DataGrid.
- Сохраните этот код под именем DataProviderExample.as в том же каталоге, где и FLA-файл.
- Присвойте классу Document в FLA-файле значение DataProviderExample.
package
{
import fl.controls.Button;
import fl.controls.ComboBox;
import fl.controls.DataGrid;
import fl.controls.Label;
import fl.controls.TextInput;
import fl.data.DataProvider;
import flash.display.Sprite;
import flash.events.*;
import flash.text.TextFieldAutoSize;
public class DataProviderExample extends Sprite
{
private var southern:DataGrid;
private var northern:DataGrid;
private var world:DataGrid;
private var southernRoster:DataProvider;
private var northernRoster:DataProvider;
private var leagueCB:ComboBox;
private var nameTI:TextInput;
private var goalsTI:TextInput;
private var submitBtn:Button;
public function DataProviderExample() {
southernRoster = new DataProvider();
northernRoster = new DataProvider();
createDataGrids();
createUI();
}
private function createUI():void {
var description:Label = new Label();
description.text = "Enter player's name, goals scored, and hemisphere of origin:";
description.autoSize = TextFieldAutoSize.LEFT;
nameTI = new TextInput();
goalsTI = new TextInput();
var submitBtn:Button = new Button();
submitBtn.label = "Submit Player";
submitBtn.addEventListener(MouseEvent.CLICK, submitPlayer);
leagueCB = new ComboBox();
leagueCB.addItem( { label:"Northern", data: 0 } );
leagueCB.addItem( { label:"Southern", data: 1 } );
description.move(10,10);
nameTI.move(10,40);
nameTI.setSize(150,24);
goalsTI.move(170,40);
goalsTI.setSize(40,24);
leagueCB.move(220,40);
leagueCB.setSize(120,24);
submitBtn.move(350,40);
goalsTI.restrict = "0123456789";
addChild(description);
addChild(leagueCB);
addChild(submitBtn);
addChild(nameTI);
addChild(goalsTI);
}
private function submitPlayer(e:MouseEvent):void {
if(nameTI.text != "" && goalsTI.text != "") {
var targetRoster:DataProvider;
if(leagueCB.selectedItem.label == "Southern") {
targetRoster = southernRoster;
}
else {
targetRoster = northernRoster;
}
targetRoster.addItem( { Name: nameTI.text, Goals: goalsTI.text } );
var worldRoster:DataProvider = southernRoster.clone();
worldRoster.merge(northernRoster);
worldRoster.sortOn("Goals", Array.NUMERIC | Array.DESCENDING);
southernRoster.sortOn("Goals", Array.NUMERIC | Array.DESCENDING);
northernRoster.sortOn("Goals", Array.NUMERIC | Array.DESCENDING);
world.dataProvider = worldRoster;
nameTI.text = "";
goalsTI.text = "";
}
}
private function createDataGrids():void {
southern = new DataGrid();
northern = new DataGrid();
world = new DataGrid();
southern.move(10,100);
northern.move(180,100);
world.move(350,100);
southern.setSize(170, 250);
northern.setSize(170, 250);
world.setSize(170, 250);
southern.columns =
northern.columns =
world.columns = [ "Name", "Goals" ];
southern.dataProvider = southernRoster;
northern.dataProvider = northernRoster;
addChild(southern);
addChild(northern);
addChild(world);
var northernLabel:Label = new Label();
northernLabel.autoSize = TextFieldAutoSize.LEFT;
northernLabel.text = "Southern Hemisphere";
northernLabel.move(10,75);
addChild(northernLabel);
var southernLabel:Label = new Label();
southernLabel.autoSize = TextFieldAutoSize.LEFT;
southernLabel.text = "Northern Hemisphere";
southernLabel.move(180,75);
addChild(southernLabel);
var majorLabel:Label = new Label();
majorLabel.autoSize = TextFieldAutoSize.LEFT;
majorLabel.text = "World";
majorLabel.move(350,75);
addChild(majorLabel);
}
}
}
© 2004-2008 Adobe Systems Incorporated. All rights reserved.
Wed Sep 24 2008, 07:56 AM -07:00