PDA

Просмотр полной версии : перевод Array в ArrayCollection


oCa
10.03.2007, 21:58
Вопрос следующий: как мне перевести Array в ArrayCollection?
Имеется массив, который берется из внешних данных (из БД в частности). Этот массив имеет в качестве элементов названия других массивов.
Необходимо сделать обработку события т.о. чтобы при выборе RadioButton-ом менялся источник данных dataProvider у PieChart-а.
Эти источники как раз и есть те массивы, названия которых лежат в исходном массиве.
Проблема в том, что если брать просто массив, то его элементы не воспринимаются при смене dataProvider-а.
А если брать ArrayCollection, то всё нормально.
Поясню на примере:
Допустим есть два массива:

[Bindable]
private var golos1:ArrayCollection = new ArrayCollection( [
{ data: 50, legend: "Пять"},
{ data: 20, legend: "Шесть"} ]);

[Bindable]
public var radio:Array=[
{name:"Первое", idvote: golos1},
{name:"Второе", idvote: golos2}];

В массиве radio элементы idvote и есть ссылки на ArrayCollection типа golos1...golos4.
Есть ли способ перевода из Array в ArrayCollection? Или какой-нить вариант создания не Array а ArrayCollection,
но средствами PHP?
Частичный код:

<mx:PieChart id="candlestickchart" height="198" width="365" paddingRight="5" paddingLeft="5"
showDataTips="true" dataProvider="{golos2}" >
<mx:series>
<mx:PieSeries
field="data" labelPosition="callout" nameField="legend" showDataEffect="{interpolateIn}">
<mx:calloutStroke>
<mx:Stroke weight="0" color="0x888888" alpha="1.0"/>
</mx:calloutStroke>
<mx:radialStroke>
<mx:Stroke weight="0" color="#FFFFFF" alpha="0.20"/>
</mx:radialStroke>
<mx:stroke>
<mx:Stroke color="0" alpha="0.20" weight="2"/>
</mx:stroke>
</mx:PieSeries>
</mx:series>
</mx:PieChart>
<mx:Repeater id="myrep" dataProvider="{radio}" startingIndex="0" >
<mx:RadioButton label="{myrep.currentItem.name}" groupName="stocks"
click="candlestickchart.dataProvider=event.currentTarget.getRepeaterItem().idvote;"/>
</mx:Repeater>

Nirth
11.03.2007, 20:10
var myArray:Array = new Array(1,2,3,4,5);
var myCollection:ArrayCollection = new ArrayCollection(myArray);

oCa
12.03.2007, 11:14
Огромное спасибо!
Всё работает