#actionscript-3 #apache-flex #actionscript #charts #flex3
#actionscript-3 #apache-flex #actionscript #Диаграммы #flex3
Вопрос:
Возможно ли вызвать событие щелчка элемента гибкой диаграммы при щелчке элемента Datagrid. Если да, то кто-нибудь может привести какой-нибудь пример.
Ответ №1:
Я бы сделал это немного по-другому, а затем попытался вызвать событие на диаграмме. Я бы попытался инкапсулировать вашу логику круговой диаграммы в новую функцию
Если у вас есть событие на круговой диаграмме, подобное этому:
private function PieChartClick(event:ItemEvent):void{
DoPieChartClick();
}
private function DoPieChartClick():void{
var selectedItem = picChart.SelectedItem;
//do the rest of your logic
}
private function DataGridClick(event:ItemEvent):void{
//do your datagrid stuff
DoPieChartClick(); //This would be like you clicked on the pie chart.
}
Ответ №2:
Да, можно запускать событие ItemClick при каждом нажатии на datagrid или любой другой элемент.Здесь важно то, что индекс элемента в таблице данных должен быть функцией индекса элемента в диаграмме элементов.
Любая диаграмма содержит элемент «series», а любой элемент «series» содержит в себе массив «items». Вы можете вызвать наведение курсора мыши на этот «элемент», используя механизм запуска flex.
Ответ №3:
Привет, нашел решение после некоторого поиска в Google, спасибо за комментарии Neeraj amp; Nate.
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script><![CDATA[
import mx.charts.*;
import mx.collections.ArrayCollection;
import mx.events.ListEvent;
import mx.graphics.GradientEntry;
import mx.graphics.LinearGradient;
[Bindable]
public var explodingArray:Array = [0,0,0,0,0,0];
private function explodeSlice(e:ListEvent):void{
explodingArray = [0,0,0,0,0,0];
explodingArray[e.rowIndex]=0.1;
pie1.series[0].perWedgeExplodeRadius = explodingArray;
expenses2.refresh();
}
[Bindable]
public var expenses2:ArrayCollection = new ArrayCollection([
{Tissues: "Large Intestine", TissueCount: 149},
{Tissues: "Lung", TissueCount: 127},
{Tissues: "Pancreas", TissueCount: 84},
{Tissues: "Biliary Tract", TissueCount: 58},
{Tissues: "Haematopoietic and Lymphoid tissue", TissueCount: 20}
]);
]]></mx:Script>
<mx:DataGrid dataProvider="{expenses2}" editable="false" itemClick="explodeSlice(event)" >
<mx:columns>
<mx:DataGridColumn dataField="TissueCount" headerText="Tissues Count"/>
<mx:DataGridColumn dataField="Tissues" headerText="Tissues"/>
</mx:columns>
</mx:DataGrid>
<mx:SeriesInterpolate id="interpolate" duration="1000"/>
<mx:HBox>
<mx:Panel title="Exploding Pie Chart (animated)">
<mx:PieChart id="pie1" dataProvider="{expenses2}" showDataTips="true" selectionMode="single">
<mx:series>
<mx:PieSeries field="TissueCount" nameField="Tissues" perWedgeExplodeRadius="{explodingArray}" showDataEffect="interpolate"/>
</mx:series>
</mx:PieChart>
<mx:Legend dataProvider="{pie1}"/>
</mx:Panel>
</mx:HBox>
</mx:Application>