#apache-flex #arraycollection #linechart
#apache-flex #arraycollection #линейная диаграмма
Вопрос:
Это моя коллекция массивов
[Bindable]private var Projects:ArrayCollection = new ArrayCollection( [
{ Department: "Software", TotalProjects: 73,Completed:30,Inprogress:30,Approved:13},
{ Department: "XML",TotalProjects: 50,Completed:20,Inprogress:20,Approved:10},
{ Department: "Publishing",TotalProjects: 25,Completed:5,Inprogress:10,Approved:10},
{ Department: "Indesign", TotalProjects: 70,Completed:30,Inprogress:30,Approved:10},
{ Department: "Imaging", TotalProjects: 42,Completed:30,Inprogress:10,Approved:2}]);
линейные ряды для линейной диаграммы:
<mx:series>
<mx:LineSeries id="cs1"
yField="TotalProjects"
xField="Department"
displayName="TotalProjects">
</mx:LineSeries>
<mx:LineSeries id="cs2"
yField="Inprogress"
xField="Department"
displayName="Inprogress">
</mx:LineSeries>
<mx:LineSeries id="cs3"
yField="Completed"
xField="Department"
displayName="Completed">
</mx:LineSeries>
<mx:LineSeries id="cs4"
yField="Approved"
xField="Department"
displayName="Approved">
</mx:LineSeries>
</mx:series>
как я могу создавать mx:LineSeries
динамически в зависимости от значений коллекции массива. Теперь есть только 4 ряда строк, но иногда мне приходится показывать больше в соответствии с изменением значений коллекции массива, например: если HoldProject
в коллекцию массива добавлен еще один статус?
Ответ №1:
var series:Array=[];
for (var prop:String in Projects[0])
if (prop != "Department") {
var ls:LineSeries=new LineSeries();
ls.yField=prop;
ls.xField="Department";
s.displayName=prop;
series.push(ls);
}
myChart.series=series;
В этом случае каждый элемент в вашем dataProvider должен иметь одинаковый набор свойств.
Комментарии:
1. Хорошо. если я каждый раз получаю объекты коллекции массива с разными свойствами, как перебирать элементы коллекции массива и создавать линейные ряды?
2. Не могли бы вы предоставить более подробную информацию? Потому что, как мы можем знать, какое поле следует использовать в каждом элементе в качестве yField?
3. @ Timofei Davydik в приведенной коллекции массивов
Department
это обычное явление, но остальные поля иногда меняют только 3 статуса:Completed
,hold
,approved
и в несколько раз большеCompleted
,hold
,approved
,deleted
,initial
,deferred
и т.д.4. @ Timofei Davydik это хорошо, но
prop
вместо атрибута (отдела) извлекается значение (программное обеспечение). как получить атрибут из проектов [0]?5. @M.S.Nayak вы уверены, что скопировали код? В моем коде
for...var
используется цикл, он извлекает свойства / атрибуты. Иfor each...var
цикл извлекает значения. Пожалуйста, убедитесь, что вы используетеfor...var
.