Solved! Go to Solution.
<s:TextInput id="qText" width="100%" enter="doSearch()" text="AU" toolTip="You may use % as a wildcard, e.g., A%"/> <s:Button click="doSearch()" label="Search"/>
{
var urltable:String = "http://tfsgis-iisd01:6080/arcgis/rest/services/SARS_WILSON/RELATED_TABLES/FeatureServer/1" //or you can use your feature layer layerDetails informations to get the related table Id.
var yourTable:FeatureLayer; //Here you're casting the table as a FeatureLayer so it's editable
yourTable = new FeatureLayer(urltable, null, null) as FeatureLayer;
yourTable.outFields = ["*"];
yourTable.definitionExpression = "Office like '" + qText.text + "'";
myAttributeTable.featureLayer = yourTable
}
<?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"
xmlns:esri="http://www.esri.com/2008/ags"
pageTitle="Related records">
<s:layout>
<s:VerticalLayout gap="0"/>
</s:layout>
<fx:Script>
<![CDATA[
import com.esri.ags.FeatureSet;
import com.esri.ags.events.FeatureLayerEvent;
import com.esri.ags.events.MapMouseEvent;
import com.esri.ags.geometry.Extent;
import com.esri.ags.tasks.supportClasses.Query;
import com.esri.ags.tasks.supportClasses.RelationshipQuery;
import mx.controls.Alert;
import mx.rpc.AsyncResponder;
[Bindable]
private var selectedObjectID:Number;
[Bindable]
private var relatedRecordsCount:Number;
private function findWells(event:MapMouseEvent):void
{
// find wells near the mouse click
var tol:Number = map.extent.width / map.width * 5;
var x:Number = event.mapPoint.x;
var y:Number = event.mapPoint.y;
var queryExtent:Extent = new Extent(x - tol, y - tol, x + tol, y + tol, event.mapPoint.spatialReference);
var thisSelectionQuery:Query = new Query();
thisSelectionQuery.geometry = queryExtent;
wellsLayer.selectFeatures(thisSelectionQuery, FeatureLayer.SELECTION_NEW);
}
private function wellsLayer_selectionCompleteHandler(event:FeatureLayerEvent):void
{
relatedDatagrid.dataProvider = null;
// check the first return feature to see if it has any related features
if (event.features.length > 0)
{
relatedTopsQuery.objectIds = [ event.features[0].attributes.OBJECTID ];
selectedObjectID = event.features[0].attributes.OBJECTID;
wellsLayer.queryRelatedFeatures(relatedTopsQuery, new AsyncResponder(onResult, onFault));
function onResult(relatedRecords:Object, token:Object = null):void
{
// get related records for the first feature
var fset:FeatureSet = (relatedRecords[event.features[0].attributes.OBJECTID]);
if (fset is FeatureSet)
{
relatedDatagrid.dataProvider = new ArrayCollection(fset.attributes)
relatedRecordsCount = fset.attributes.length;
}
else
{
Alert.show("No related records for well #" + event.features[0].attributes.OBJECTID, "No related records");
relatedRecordsCount = 0;
}
}
function onFault(info:Object, token:Object = null):void
{
map.infoWindow.hide();
Alert.show(info.toString(), "queryRelatedFeatures Problem");
}
}
else
{
map.infoWindow.hide();
Alert.show("No wells found here, please try somewhere else.", "No features");
}
}
protected function saveRelatedRecordsForObjectID(event:MouseEvent):void
{
}
protected function deleteRelatedRecordsForObjectID(event:MouseEvent):void
{
}
]]>
</fx:Script>
<fx:Declarations>
<esri:RelationshipQuery id="relatedTopsQuery"
outFields="[OBJECTID,API_NUMBER,ELEVATION,FORMATION,TOP]"
relationshipId="3"/>
</fx:Declarations>
<s:controlBarLayout>
<s:VerticalLayout gap="10"
paddingBottom="7"
paddingLeft="10"
paddingRight="10"
paddingTop="7"/>
</s:controlBarLayout>
<s:controlBarContent>
<s:Button click="saveRelatedRecordsForObjectID(event)"
label="Save"
visible="{relatedRecordsCount > 0}"/>
<s:Button
click="deleteRelatedRecordsForObjectID(event)"
label= "Delete Records"
visible="{relatedRecordsCount > 0}"/>
</s:controlBarContent>
<esri:Map id="map" mapClick="findWells(event)">
<esri:extent>
<esri:Extent xmin="-10854000" ymin="4502000" xmax="-10829000" ymax="4524000">
<esri:SpatialReference wkid="102100"/>
</esri:Extent>
</esri:extent>
<esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer"/>
<esri:ArcGISDynamicMapServiceLayer url="http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Petroleum/KSPetro/MapServer">
<esri:visibleLayers>
<s:ArrayCollection>
<fx:Number>0</fx:Number>
<fx:Number>1</fx:Number>
</s:ArrayCollection>
</esri:visibleLayers>
</esri:ArcGISDynamicMapServiceLayer>
<esri:FeatureLayer id="wellsLayer"
mode="selection"
outFields="[completion,plug_date]"
selectionComplete="wellsLayer_selectionCompleteHandler(event)"
url="http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Petroleum/KSPetro/MapServer/0">
<esri:infoWindowRenderer>
<fx:Component>
<esri:LabelDataRenderer>
<esri:layout>
<s:VerticalLayout/>
</esri:layout>
<esri:label>Well ID {data.OBJECTID}</esri:label>
<s:Label text="Plug date: {data.plug_date ? new Date(data.plug_date) : 'No date available'}"/>
<s:Label text="Completion: {data.completion ? new Date(data.completion) : 'No date available'}"/>
</esri:LabelDataRenderer>
</fx:Component>
</esri:infoWindowRenderer>
</esri:FeatureLayer>
</esri:Map>
<s:DataGrid id="relatedDatagrid"
width="100%" height="45%">
<s:columns>
<s:ArrayList>
<s:GridColumn dataField="OBJECTID" headerText="ID"/>
<s:GridColumn dataField="API_NUMBER" headerText="API Number"/>
<s:GridColumn dataField="ELEVATION" headerText="Elevation"/>
<s:GridColumn dataField="FORMATION" headerText="Formation"/>
<s:GridColumn dataField="TOP" headerText="Top"/>
</s:ArrayList>
</s:columns>
</s:DataGrid>
</s:Application>