Andrew,I do not understand what you want to hear, listening myfLayer.addEventListener(GraphicEvent.GRAPHIC_ADD,fLayer_graphicAddHandler);?How are going to add "Graphic"?As I understand, for FeatureLayer add() is not supported.What is your task? Why fLayer_graphicAddHandler needed?<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
backgroundColor="0x9c9c9c">
<!-- Adobe Flex SDK 4.6.0 -->
<!-- ArcGIS API for Flex 3.0 prerelease 15.03.2012 -->
<!-- web.zone.ee/bespiva/layerwithoutmap -->
<s:layout>
<s:VerticalLayout gap="10"
paddingLeft="10"
paddingRight="10"
paddingTop="10"
paddingBottom="10" />
</s:layout>
<s:Label text="Load layer:" />
<s:HGroup width="100%">
<s:TextInput id="txtUrl"
width="100%"
text="http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Fire/Sheep/MapServer/0" />
<s:Button label="Load"
click="onLoadButtonClick(event)" />
</s:HGroup>
<s:Label text="Query results table:" />
<s:VGroup width="100%"
height="50%">
<s:DataGrid width="100%"
height="100%"
dataProvider="{gridProvider}" />
</s:VGroup>
<s:Label text="Logs:" />
<s:VGroup width="100%"
height="100%">
<s:TextArea width="100%"
height="100%"
id="log" />
</s:VGroup>
<fx:Script>
<![CDATA[
import com.esri.ags.FeatureSet;
import com.esri.ags.Graphic;
import com.esri.ags.events.LayerEvent;
import com.esri.ags.layers.FeatureLayer;
import com.esri.ags.tasks.supportClasses.Query;
import mx.collections.ArrayCollection;
import mx.rpc.AsyncResponder;
import mx.rpc.Fault;
import mx.utils.StringUtil;
[Bindable]
private var gridProvider:ArrayCollection = new ArrayCollection();
private var activeLayer:FeatureLayer = null;
private function addLog(message:String):void
{
log.text = StringUtil.substitute("{0}\n\n{1}", message, log.text);
}
protected function onLoadButtonClick(event:MouseEvent):void
{
addLog("onLoadButtonClick()");
if (txtUrl.text.length > 0)
{
initLayer(txtUrl.text);
}
else
{
addLog("Layer url is empty. Enter valid layer url.");
}
}
private function initLayer(url:String):void
{
addLog("initLayer()");
if (activeLayer)
{
gridProvider = null;
activeLayer.removeEventListener(LayerEvent.LOAD, onLayerLoad);
activeLayer.removeEventListener(LayerEvent.LOAD_ERROR, onLayerLoadError);
}
activeLayer = new FeatureLayer(url);
activeLayer.mode = FeatureLayer.MODE_SNAPSHOT;
activeLayer.outFields = new Array("*"); // all
activeLayer.addEventListener(LayerEvent.LOAD, onLayerLoad, false, 0, true);
activeLayer.addEventListener(LayerEvent.LOAD_ERROR, onLayerLoadError, false, 0, true);
dispatchEvent(new LayerEvent(LayerEvent.LOAD, activeLayer));
}
protected function onLayerLoad(event:LayerEvent):void
{
addLog("onLayerLoad()");
queryFeatures();
}
protected function onLayerLoadError(event:LayerEvent):void
{
addLog("onLayerLoadError()");
}
private function queryFeatures():void
{
addLog("queryFeatures()");
if (activeLayer)
{
var query:Query = new Query();
query.returnGeometry = false;
query.where = "1=1"; // all
activeLayer.queryFeatures(query, new AsyncResponder(onQueryResult, ouQueryFault, activeLayer));
}
}
protected function onQueryResult(featuresSet:FeatureSet, token:Object = null):void
{
addLog("onQueryResult()");
var queryLayer:FeatureLayer = activeLayer as FeatureLayer;
if (activeLayer != queryLayer)
{
return;
}
gridProvider = new ArrayCollection();
for each (var gr:Graphic in featuresSet.features)
{
gridProvider.addItem(gr.attributes);
}
}
protected function ouQueryFault(fault:Fault, token:Object = null):void
{
addLog(StringUtil.substitute("ouQueryFault()\n{0}", fault.message.toString()));
}
]]>
</fx:Script>
</s:Application>