for each (var graphic:Graphic in featureSet.features)
{
var category:String = graphic.attributes.category;
var subcat:String = graphic.attributes.subCategory;
var data:Object = {
category: category,
subcat: subcat
}
cboCategory.dataProvider = data.subcat;
}
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:esri="http://www.esri.com/2008/ags">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.collections.ArrayCollection;
import com.esri.ags.Graphic;
import com.esri.ags.tasks.FeatureSet;
import com.esri.ags.events.QueryEvent;
private function queryData():void
{
queryTask.execute(query);
queryTask.addEventListener(QueryEvent.EXECUTE_COMPLETE, onQueryComplete);
}
private function onQueryComplete(event:QueryEvent):void
{
var featureSet:FeatureSet = event.featureSet;
var results:ArrayCollection = new ArrayCollection();
for each (var graphic:Graphic in featureSet.features)
{
var fieldValue:String = graphic.attributes["STATE_NAME"].toString();
results.addItem({label: fieldValue, data:graphic});
}
cmb.labelField = "label";
cmb.dataProvider = results;
}
]]>
</mx:Script>
<esri:QueryTask
id="queryTask"
url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/5"/>
<esri:Query
id="query"
returnGeometry="false"
where="1=1"
outFields='["STATE_NAME"]'/>
<mx:ComboBox id="cmb" x="179" y="205" labelField=""></mx:ComboBox>
<mx:Button x="87" y="205" label="Load Data" click="queryData();"/>
</mx:Application>
Also.. Set your dataProvidor outside of the loop...
Here is a working sample of code populating a combo box.<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:esri="http://www.esri.com/2008/ags"> <mx:Script> <![CDATA[ import mx.controls.Alert; import mx.collections.ArrayCollection; import com.esri.ags.Graphic; import com.esri.ags.tasks.FeatureSet; import com.esri.ags.events.QueryEvent; private function queryData():void { queryTask.execute(query); queryTask.addEventListener(QueryEvent.EXECUTE_COMPLETE, onQueryComplete); } private function onQueryComplete(event:QueryEvent):void { var featureSet:FeatureSet = event.featureSet; var results:ArrayCollection = new ArrayCollection(); for each (var graphic:Graphic in featureSet.features) { var fieldValue:String = graphic.attributes["STATE_NAME"].toString(); results.addItem({label: fieldValue, data:graphic}); } cmb.labelField = "label"; cmb.dataProvider = results; } ]]> </mx:Script> <esri:QueryTask id="queryTask" url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/5"/> <esri:Query id="query" returnGeometry="false" where="1=1" outFields='["STATE_NAME"]'/> <mx:ComboBox id="cmb" x="179" y="205" labelField=""></mx:ComboBox> <mx:Button x="87" y="205" label="Load Data" click="queryData();"/> </mx:Application>
Drew
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:esri="http://www.esri.com/2008/ags">
<mx:Script>
<![CDATA[
import com.esri.ags.FeatureSet;
import com.esri.ags.Graphic;
import com.esri.ags.events.QueryEvent;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
private function queryData():void
{
queryTask.execute(query);
queryTask.addEventListener(QueryEvent.EXECUTE_COMPLETE, onQueryComplete);
}
private function onQueryComplete(event:QueryEvent):void
{
var featureSet:FeatureSet = event.featureSet;
var results:ArrayCollection = new ArrayCollection();
for each (var graphic:Graphic in featureSet.features)
{
var fieldValue:String = graphic.attributes["STATE_NAME"].toString();
results.addItem({label: fieldValue, data:graphic});
}
cmb.labelField = "label";
cmb.dataProvider = results;
}
]]>
</mx:Script>
<esri:QueryTask
id="queryTask"
useAMF="false"
url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/5"/>
<esri:Query
id="query"
returnGeometry="false"
where="1=1"
outFields='["STATE_NAME"]'/>
<mx:ComboBox id="cmb" x="179" y="205" labelField=""></mx:ComboBox>
<mx:Button x="87" y="205" label="Load Data" click="queryData();"/>
</mx:Application>
Thanks Drew. It worked.
Do you know if there is way to populate the combobox without using "QueryData" function so I do not have to push the "Load Data" button.
nshaukat
<?xml version="1.0" encoding="utf-8"?>
<mx:Application creationComplete="creationCompleteHandler(event)"
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
xmlns:esri="http://www.esri.com/2008/ags">
<mx:Script>
<![CDATA[
import com.esri.ags.FeatureSet;
import com.esri.ags.Graphic;
import com.esri.ags.events.QueryEvent;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.events.FlexEvent;
protected function creationCompleteHandler(event:FlexEvent):void
{
queryData();
}
private function queryData():void
{
queryTask.execute(query);
queryTask.addEventListener(QueryEvent.EXECUTE_COMPLETE, onQueryComplete);
}
private function onQueryComplete(event:QueryEvent):void
{
var featureSet:FeatureSet = event.featureSet;
var results:ArrayCollection = new ArrayCollection();
for each (var graphic:Graphic in featureSet.features)
{
var fieldValue:String = graphic.attributes["STATE_NAME"].toString();
results.addItem({label: fieldValue, data:graphic});
}
cmb.labelField = "label";
cmb.dataProvider = results;
}
]]>
</mx:Script>
<esri:QueryTask
id="queryTask"
useAMF="false"
url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/5"/>
<esri:Query
id="query"
returnGeometry="false"
where="1=1"
outFields='["STATE_NAME"]'/>
<mx:ComboBox id="cmb" x="179" y="205" labelField=""></mx:ComboBox>
</mx:Application>