Solved! Go to Solution.
const objectIdField:String = event.featureLayer.tableDetails.objectIdField;
var url:String = "theURLpathToYourStandaloneTable" //or you can use your feature layer layerDetails informations to get the related table Id. var yourTable:FeatureLayer = new FeatureLayer(url, null, null) as FeatureLayer ; //Here you're casting the table as a FeatureLayer so it's editable
query.where = "yourTable_displayFeatureLayerID = yourDisplayedFeatureLayerID";where yourTable_displayFeatureLayerID is the foreign key in your standalone table.
<fx:Declarations> <esri:FeatureLayer id="yourTable" outFields="*" url="http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/SanFrancisco/311Incidents/FeatureServer/1"/> </fx:Declarations>
<?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:esri="http://www.esri.com/2008/ags"
    pageTitle="Attribute Table">    
            
  <s:layout>
   <s:VerticalLayout gap="0"/>
  </s:layout>
            
  <fx:Script>
   <![CDATA[
   import com.esri.ags.Graphic;
   import com.esri.ags.events.AttributeTableEvent;
   import com.esri.ags.events.FeatureLayerEvent;
   import com.esri.ags.layers.supportClasses.FeatureEditResult;
   import com.esri.ags.layers.supportClasses.FeatureEditResults;
   import com.esri.ags.layers.supportClasses.Field;
   import com.esri.ags.tasks.supportClasses.Query;
   
   import mx.controls.Alert;
   import mx.events.FlexEvent;
   import mx.rpc.AsyncResponder;
   import mx.rpc.Fault;
   
  /* [Bindable] 
   private var urltable:String = "http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/SanFrancisco/311Incidents/MapServer/1" //or you can use your feature layer layerDetails informations to get the related table Id.
   private var yourTable:FeatureLayer; //Here you're casting the table as a FeatureLayer so it's editable
   
   protected function application1_initializeHandler(event:FlexEvent):void
   {
    yourTable = new FeatureLayer(urltable, null, null) as FeatureLayer;
   }*/
   protected function myMap_clickHandler(event:MouseEvent):void
   {
    if (event.target is Graphic || event.target.parent is Graphic)                
    {                    
     var graphic:Graphic = event.target is Graphic ? Graphic(event.target) : Graphic(event.target.parent);
       var query:Query = new Query;
            query.objectIds = [graphic.attributes[myFeatureLayer.layerDetails.objectIdField]];
     myFeatureLayer.selectFeatures(query, FeatureLayer.SELECTION_NEW);
     myFeatureLayer.addEventListener(FeatureLayerEvent.SELECTION_COMPLETE,myFeatureLayer_SelectionCompleteHandler);
      }
    else
    {
     myFeatureLayer.clearSelection();
     yourTable.clearSelection();
      }
   }
   
   protected function myFeatureLayer_SelectionCompleteHandler(event:FeatureLayerEvent):void
   {
    var query:Query = new Query;
    query.where = "sf_311_serviceoid  = " + myFeatureLayer.selectedFeatures[0].attributes.objectid;
    yourTable.selectFeatures(query, FeatureLayer.SELECTION_NEW);
   }
   
   protected function fdg_updateFeatureHandler(event:AttributeTableEvent):void
   {
   //TODO
   }
   
   protected function fdg_deleteFeaturesHandler(event:AttributeTableEvent):void
   {                
    //TODO
   }
   
   private function featureLayer_editsCompleteHandler(featureEditResults:FeatureEditResults, token:Object = null):void            
   {               
            //TODO
   }
   
   private function featureLayer_faultHandler(fault:Fault, token:Object = null):void
   {                
    Alert.show(fault.faultString, "Fault");
    myAttributeTable.refresh();
   }        
   
  ]]>    
   
</fx:Script>
<fx:Declarations>
 
 <esri:FeatureLayer id="yourTable" outFields="*" url="http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/SanFrancisco/311Incidents/FeatureServer/1"/>    
</fx:Declarations>            
            
  <s:controlBarContent>        
   <s:RichText width="100%">
    This sample demonstrates how to use the AttributeTable component which allows viewing and editing feature atttributes.
     The component uses a data grid where the columns correspond to the fields of a feature layer.
     The application also allows user to click on a feature and select it. The AttributeTable then displays the selection
     by highlighting the corresponding row in the grid.
          
   </s:RichText>    
  </s:controlBarContent>
  <esri:Map id="myMap"
   width="100%" height="60%"
   click="myMap_clickHandler(event)">        
   <esri:extent>            
    <esri:Extent id="sheepfire" xmin="-13638587" ymin="4543797" xmax="-13620242" ymax="4549912">                
     <esri:SpatialReference wkid="102100"/>            
    </esri:Extent>        
   </esri:extent>        
   <esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer"/>        
   <esri:FeatureLayer id="myFeatureLayer" mode="onDemand" outFields="*" url="http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/SanFrancisco/311Incidents/FeatureServer/0"/>    
       
  </esri:Map>
  <s:Line width="100%">        
   <s:stroke>            
    <s:SolidColorStroke color="0x000000" weight="1"/>        
   </s:stroke>    
  </s:Line>
  <s:BorderContainer width="100%" height="40%"
      backgroundColor="0xEEEEEE"
      borderVisible="false">        
   <s:layout>            
    <s:HorizontalLayout paddingLeft="5" paddingRight="5" paddingTop="2"/>        
   </s:layout>        
   <esri:AttributeTable 
    id="myAttributeTable"
    width="100%" height="100%"
    deleteFeatures="fdg_deleteFeaturesHandler(event)"
    featureLayer="{yourTable}"
    updateFeature="fdg_updateFeatureHandler(event)">            
   </esri:AttributeTable>    
  </s:BorderContainer>
           
 </s:Application>
					
				
			
			
				
			
			
				
			
			
			
			
			
			
		
<?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:esri="http://www.esri.com/2008/ags"
    pageTitle="Attribute Table">    
  
  
  <s:layout>
   <s:VerticalLayout gap="0"/>
  </s:layout>
  
  <fx:Script>
   <![CDATA[
    import com.esri.ags.Graphic;
    import com.esri.ags.events.AttributeTableEvent;
    import com.esri.ags.events.FeatureLayerEvent;
    import com.esri.ags.layers.supportClasses.FeatureEditResult;
    import com.esri.ags.layers.supportClasses.FeatureEditResults;
    import com.esri.ags.layers.supportClasses.Field;
    import com.esri.ags.tasks.supportClasses.Query;
    
    import mx.controls.Alert;
    import mx.events.FlexEvent;
    import mx.rpc.AsyncResponder;
    import mx.rpc.Fault;
    
    /* [Bindable] 
    private var urltable:String = "http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/SanFrancisco/311Incidents/MapServer/1" //or you can use your feature layer layerDetails informations to get the related table Id.
    private var yourTable:FeatureLayer; //Here you're casting the table as a FeatureLayer so it's editable
    
    protected function application1_initializeHandler(event:FlexEvent):void
    {
    yourTable = new FeatureLayer(urltable, null, null) as FeatureLayer;
    }*/
    protected function myMap_clickHandler(event:MouseEvent):void
    {
     if (event.target is Graphic || event.target.parent is Graphic)                
     {                    
      var graphic:Graphic = event.target is Graphic ? Graphic(event.target) : Graphic(event.target.parent);
      var query:Query = new Query;
      query.objectIds = [graphic.attributes[myFeatureLayer.layerDetails.objectIdField]];
      myFeatureLayer.selectFeatures(query, FeatureLayer.SELECTION_NEW);
      myFeatureLayer.addEventListener(FeatureLayerEvent.SELECTION_COMPLETE,myFeatureLayer_SelectionCompleteHandler);
     }
     else
     {
      myFeatureLayer.clearSelection();
      yourTable.clearSelection();
     }
    }
    
    protected function myFeatureLayer_SelectionCompleteHandler(event:FeatureLayerEvent):void
    {
     var query:Query = new Query;
     query.where = "sf_311_serviceoid  = " + myFeatureLayer.selectedFeatures[0].attributes.objectid;
     yourTable.selectFeatures(query, FeatureLayer.SELECTION_NEW);
    }
    
    protected function fdg_updateFeatureHandler(event:AttributeTableEvent):void
    {
     const attributes:Object = {};
     const objectIdField:String = event.featureLayer.layerDetails.objectIdField;
     attributes[objectIdField] = event.feature.attributes[objectIdField];
     attributes[event.field.name] = event.newValue;
     
     // change the attributes on client right away
     event.feature.attributes[event.field.name] = event.newValue;
     
     const feature:Graphic = new Graphic(null, null, attributes);
     const updates:Array = [ feature ];
     event.featureLayer.applyEdits(null, updates, null, false,
      new AsyncResponder(featureLayer_editsCompleteHandler, featureLayer_faultHandler,
       { feature: event.feature, field: event.field, oldValue: event.oldValue }));
    }
    
    protected function fdg_deleteFeaturesHandler(event:AttributeTableEvent):void
    {
     const deletes:Array = event.features;
     event.featureLayer.applyEdits(null, null, deletes, false,
      new AsyncResponder(featureLayer_editsCompleteHandler, featureLayer_faultHandler));
    }
    
    private function featureLayer_editsCompleteHandler(featureEditResults:FeatureEditResults, token:Object = null):void
    {
     var doRefresh:Boolean = false;
     
     for each (var deleteResult:FeatureEditResult in featureEditResults.deleteResults)
     {
      if (deleteResult.success === false)
      {
       Alert.show("Could not delete feature");
       doRefresh = true;
      }
     }
     
     for each (var updateResult:FeatureEditResult in featureEditResults.updateResults)
     {
      const feature:Graphic = token.feature;
      if (updateResult.success === false)
      {
       Alert.show("Could not update feature, Restoring old value", "Error");
       
       const field:Field = token.field;
       feature.attributes[field.name] = token.oldValue;
       doRefresh = true;
      }
      else
      {
       feature.refresh();
      }
     }
     
     if (doRefresh)
     {
      myAttributeTable.refresh();
     }
    }
    
    private function featureLayer_faultHandler(fault:Fault, token:Object = null):void
    {
     Alert.show(fault.faultString, "Fault");
     myAttributeTable.refresh();
    }
    
    
   ]]>    
   
   
  </fx:Script>
  
  <fx:Declarations>
   
   <esri:FeatureLayer id="yourTable" outFields="*" url="http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/SanFrancisco/311Incidents/FeatureServer/1"/>    
  </fx:Declarations>            
  
  <s:controlBarContent>        
   <s:RichText width="100%">
    This sample demonstrates how to use the AttributeTable component which allows viewing and editing feature atttributes.
    The component uses a data grid where the columns correspond to the fields of a feature layer.
    The application also allows user to click on a feature and select it. The AttributeTable then displays the selection
    by highlighting the corresponding row in the grid.
    
   </s:RichText>    
  </s:controlBarContent>
  <esri:Map id="myMap"
   width="100%" height="60%"
   click="myMap_clickHandler(event)">        
   <esri:extent>            
    <esri:Extent id="sheepfire" xmin="-13638587" ymin="4543797" xmax="-13620242" ymax="4549912">                
     <esri:SpatialReference wkid="102100"/>            
    </esri:Extent>        
   </esri:extent>        
   <esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer"/>        
   <esri:FeatureLayer id="myFeatureLayer" mode="onDemand" outFields="*" url="http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/SanFrancisco/311Incidents/FeatureServer/0"/>    
   
  </esri:Map>
  <s:Line width="100%">        
   <s:stroke>            
    <s:SolidColorStroke color="0x000000" weight="1"/>        
   </s:stroke>    
  </s:Line>
  <s:BorderContainer width="100%" height="40%"
      backgroundColor="0xEEEEEE"
      borderVisible="false">        
   <s:layout>            
    <s:HorizontalLayout paddingLeft="5" paddingRight="5" paddingTop="2"/>        
   </s:layout>        
   <esri:AttributeTable 
    id="myAttributeTable"
    width="100%" height="100%"
    deleteFeatures="fdg_deleteFeaturesHandler(event)"
    featureLayer="{yourTable}"
    updateFeature="fdg_updateFeatureHandler(event)">            
   </esri:AttributeTable>    
  </s:BorderContainer>
            
</s:Application>
					
				
			
			
				
			
			
				
			
			
			
			
			
			
		
<?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:esri="http://www.esri.com/2008/ags"
    pageTitle="Attribute Table">    
  
  
  <s:layout>
   <s:VerticalLayout gap="0"/>
  </s:layout>
  
  <fx:Script>
   <![CDATA[
    import com.esri.ags.Graphic;
    import com.esri.ags.events.AttributeTableEvent;
    import com.esri.ags.events.FeatureLayerEvent;
    import com.esri.ags.layers.supportClasses.FeatureEditResult;
    import com.esri.ags.layers.supportClasses.FeatureEditResults;
    import com.esri.ags.layers.supportClasses.Field;
    import com.esri.ags.tasks.supportClasses.Query;
    
    import mx.controls.Alert;
    import mx.events.FlexEvent;
    import mx.rpc.AsyncResponder;
    import mx.rpc.Fault;
    
    /* [Bindable] 
    private var urltable:String = "http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/SanFrancisco/311Incidents/MapServer/1" //or you can use your feature layer layerDetails informations to get the related table Id.
    private var yourTable:FeatureLayer; //Here you're casting the table as a FeatureLayer so it's editable
    
    protected function application1_initializeHandler(event:FlexEvent):void
    {
    yourTable = new FeatureLayer(urltable, null, null) as FeatureLayer;
    }*/
    protected function myMap_clickHandler(event:MouseEvent):void
    {
     if (event.target is Graphic || event.target.parent is Graphic)                
     {                    
      var graphic:Graphic = event.target is Graphic ? Graphic(event.target) : Graphic(event.target.parent);
      var query:Query = new Query;
      query.objectIds = [graphic.attributes[myFeatureLayer.layerDetails.objectIdField]];
      myFeatureLayer.selectFeatures(query, FeatureLayer.SELECTION_NEW);
      myFeatureLayer.addEventListener(FeatureLayerEvent.SELECTION_COMPLETE,myFeatureLayer_SelectionCompleteHandler);
     }
     else
     {
      myFeatureLayer.clearSelection();
      yourTable.clearSelection();
     }
    }
    
    protected function myFeatureLayer_SelectionCompleteHandler(event:FeatureLayerEvent):void
    {
     var query:Query = new Query;
     query.where = "sf_311_serviceoid  = " + myFeatureLayer.selectedFeatures[0].attributes.objectid;
     yourTable.selectFeatures(query, FeatureLayer.SELECTION_NEW);
    }
    
    protected function fdg_updateFeatureHandler(event:AttributeTableEvent):void
    {
     const attributes:Object = {};
     const objectIdField:String = event.featureLayer.layerDetails.objectIdField;
     attributes[objectIdField] = event.feature.attributes[objectIdField];
     attributes[event.field.name] = event.newValue;
     
     // change the attributes on client right away
     event.feature.attributes[event.field.name] = event.newValue;
     
     const feature:Graphic = new Graphic(null, null, attributes);
     const updates:Array = [ feature ];
     event.featureLayer.applyEdits(null, updates, null, false,
      new AsyncResponder(featureLayer_editsCompleteHandler, featureLayer_faultHandler,
       { feature: event.feature, field: event.field, oldValue: event.oldValue }));
    }
    
    protected function fdg_deleteFeaturesHandler(event:AttributeTableEvent):void
    {
     const deletes:Array = event.features;
     event.featureLayer.applyEdits(null, null, deletes, false,
      new AsyncResponder(featureLayer_editsCompleteHandler, featureLayer_faultHandler));
    }
    
    private function featureLayer_editsCompleteHandler(featureEditResults:FeatureEditResults, token:Object = null):void
    {
     var doRefresh:Boolean = false;
     
     for each (var deleteResult:FeatureEditResult in featureEditResults.deleteResults)
     {
      if (deleteResult.success === false)
      {
       Alert.show("Could not delete feature");
       doRefresh = true;
      }
     }
     
     for each (var updateResult:FeatureEditResult in featureEditResults.updateResults)
     {
      const feature:Graphic = token.feature;
      if (updateResult.success === false)
      {
       Alert.show("Could not update feature, Restoring old value", "Error");
       
       const field:Field = token.field;
       feature.attributes[field.name] = token.oldValue;
       doRefresh = true;
      }
      else
      {
       feature.refresh();
      }
     }
     
     if (doRefresh)
     {
      myAttributeTable.refresh();
     }
    }
    
    private function featureLayer_faultHandler(fault:Fault, token:Object = null):void
    {
     Alert.show(fault.faultString, "Fault");
     myAttributeTable.refresh();
    }
    
    
   ]]>    
   
   
  </fx:Script>
  
  <fx:Declarations>
   
   <esri:FeatureLayer id="yourTable" outFields="*" url="http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/SanFrancisco/311Incidents/FeatureServer/1"/>    
  </fx:Declarations>            
  
  <s:controlBarContent>        
   <s:RichText width="100%">
    This sample demonstrates how to use the AttributeTable component which allows viewing and editing feature atttributes.
    The component uses a data grid where the columns correspond to the fields of a feature layer.
    The application also allows user to click on a feature and select it. The AttributeTable then displays the selection
    by highlighting the corresponding row in the grid.
    
   </s:RichText>    
  </s:controlBarContent>
  <esri:Map id="myMap"
   width="100%" height="60%"
   click="myMap_clickHandler(event)">        
   <esri:extent>            
    <esri:Extent id="sheepfire" xmin="-13638587" ymin="4543797" xmax="-13620242" ymax="4549912">                
     <esri:SpatialReference wkid="102100"/>            
    </esri:Extent>        
   </esri:extent>        
   <esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer"/>        
   <esri:FeatureLayer id="myFeatureLayer" mode="onDemand" outFields="*" url="http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/SanFrancisco/311Incidents/FeatureServer/0"/>    
   
  </esri:Map>
  <s:Line width="100%">        
   <s:stroke>            
    <s:SolidColorStroke color="0x000000" weight="1"/>        
   </s:stroke>    
  </s:Line>
  <s:BorderContainer width="100%" height="40%"
      backgroundColor="0xEEEEEE"
      borderVisible="false">        
   <s:layout>            
    <s:HorizontalLayout paddingLeft="5" paddingRight="5" paddingTop="2"/>        
   </s:layout>        
   <esri:AttributeTable 
    id="myAttributeTable"
    width="100%" height="100%"
    deleteFeatures="fdg_deleteFeaturesHandler(event)"
    featureLayer="{yourTable}"
    updateFeature="fdg_updateFeatureHandler(event)">            
   </esri:AttributeTable>    
  </s:BorderContainer>
            
</s:Application>
					
				
			
			
				
			
			
				
			
			
			
			
			
			
		const objectIdField:String = event.featureLayer.tableDetails.objectIdField;
 protected function myFeatureLayer_SelectionCompleteHandler(event:FeatureLayerEvent):void
   {
    var query:Query = new Query;
    query.where = "Office = " + myFeatureLayer.selectedFeatures[0].attributes.NAME_SH;
    
    yourTable.selectFeatures(query, FeatureLayer.SELECTION_NEW);
     
    
    
   }
					
				
			
			
				
			
			
				
			
			
			
			
			
			
		