jenniferdnery;166986 wrote:
Are you using Editor.Select command to perform selection? Are you using FeatureDataGrid to display the features? If yes, you can use FilterSource to only show SelectedGraphics.
Jen,I would like to just use the featureDataGrid and the selection tools I've already developed or grabbed from the SDK examples (right now I'm us trying to hook the spatial selection tools). I was having trouble with that so the example I gave above I was trying to Edit.Select command but I would prefer not (I guess). Right now I can populate and select Feature Layers to the FeatureDataGrid but since I'm sending the select features to a graphic layer (MyFeatureDataGrid.GraphicsLayer = MygraphicsLayer;) the featureDataGrid doesn't give me my editing/commit button and this is what is giving me issue. Do I need to create an if statement and say something like if MyActiveLayer.SelectedItem == 1....then set the GraphicLayer to a featurelayer base on the selection and use the Editor.Select command???
private void MyDrawSurface_DrawComplete(object sender, ESRI.ArcGIS.Client.DrawEventArgs args)
{
GraphicsLayer selectionGraphicslayer = Map.Layers["MySelectionGraphicsLayer"] as GraphicsLayer;
selectionGraphicslayer.ClearGraphics();
if (MyActiveLayers.SelectedIndex == 0 || Layers.SelectedIndex == 2 || Layers.SelectedIndex == 3)
{
QueryTask MyqueryTask = new QueryTask((Layers.SelectedItem as FeatureLayer).Url);
MyqueryTask.ExecuteCompleted += MyQueryTask_ExecuteCompleted;
MyqueryTask.Failed += MyQueryTask_Failed;
Query query = new ESRI.ArcGIS.Client.Tasks.Query();
query.OutFields.Add("*");
query.Geometry = args.Geometry;
query.ReturnGeometry = true;
MyqueryTask.ExecuteAsync(query);
}
if (MyActiveLayers.SelectedIndex == 1)
{
QueryTask MyqueryTask = new QueryTask("http://myServer/ArcGIS/rest/services/Trails/FeatureServer/1");
MyqueryTask.ExecuteCompleted += QueryTask_ExecuteCompleted;
MyqueryTask.Failed += QueryTask_Failed;
Query query = new ESRI.ArcGIS.Client.Tasks.Query();
query.OutFields.Add("*");
query.Geometry = args.Geometry;
query.ReturnGeometry = true;
queryTask.ExecuteAsync(query);
}
}
private void MyQueryTask_ExecuteCompleted(object sender, ESRI.ArcGIS.Client.Tasks.QueryEventArgs args)
{
FeatureSet featureSet = args.FeatureSet;
if (featureSet == null || featureSet.Features.Count < 1)
{
MessageBox.Show("No features retured from query");
return;
}
GraphicsLayer MygraphicsLayer = Map.Layers["MySelectionGraphicsLayer"] as GraphicsLayer;
if (featureSet != null && featureSet.Features.Count > 0)
{
foreach (Graphic feature in featureSet.Features)
{
switch (featureSet.GeometryType.ToString())
{
case "Polygon":
feature.Symbol = LayoutRoot.Resources["ResultsFillSymbol"] as FillSymbol;
break;
case "Polyline":
feature.Symbol = LayoutRoot.Resources["CustomGrowLineSymbol"] as LineSymbol;
break;
case "Point":
feature.Symbol = LayoutRoot.Resources["ResultsMarkerSymbol"] as SimpleMarkerSymbol;
break;
}
MygraphicsLayer.Graphics.Insert(0, feature);
}
MyFeatureDataGrid.GraphicsLayer = MygraphicsLayer;
ResultsDisplay.IsExpanded = true;
}
MyDrawSurface.IsEnabled = false;