Jennifer thanks again! O.K. I'm hoping this will be our last correspondence on this item.The field I'm after is PARCELID and it is not the same as OBJECTID. It is a unique field/key that corresponsed to our Code Enforcement database. I think MySelectionGraphicLayers is a GraphicsLayer; Here's my code.
private void esriTools_ToolbarItemClicked(object sender, ESRI.ArcGIS.Client.Toolkit.SelectedToolbarItemArgs e)
{
switch (e.Index)
{
case 0: // Point
_drawSurface.DrawMode = DrawMode.Point;
break;
case 1: // Polyline
_drawSurface.DrawMode = DrawMode.Polyline;
break;
case 2: // Polygon
_drawSurface.DrawMode = DrawMode.Polygon;
break;
case 3: // Rectangle
_drawSurface.DrawMode = DrawMode.Rectangle;
break;
default: // Clear
_drawSurface.DrawMode = DrawMode.None;
GraphicsLayer selectionGraphicslayer = Map.Layers["MySelectionGraphicsLayer"] as GraphicsLayer;
selectionGraphicslayer.ClearGraphics();
QueryDetailsDataGrid.ItemsSource = null;
ResultsDisplay.IsExpanded = true;
break;
}
_drawSurface.IsEnabled = (_drawSurface.DrawMode != DrawMode.None);
StatusTextBlock.Text = e.Item.Text;
}
private void MyDrawSurface_DrawComplete(object sender, ESRI.ArcGIS.Client.DrawEventArgs args)
{
GraphicsLayer selectionGraphicslayer = Map.Layers["MySelectionGraphicsLayer"] as GraphicsLayer;
selectionGraphicslayer.ClearGraphics();
QueryTask queryTask = new QueryTask("http://SERVERNAME/ArcGIS/rest/services/Parcels/MapServer/0")
queryTask.ExecuteCompleted += QueryTask_ExecuteCompleted;
queryTask.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 QueryTask_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 graphicsLayer = Map.Layers["MySelectionGraphicsLayer"] as GraphicsLayer;
if (featureSet != null && featureSet.Features.Count > 0)
{
foreach (Graphic feature in featureSet.Features)
{
feature.Symbol = LayoutRoot.Resources["ResultsFillSymbol"] as FillSymbol;
graphicsLayer.Graphics.Insert(0, feature);
}
}
//ResultsDisplay.Visibility = Visibility.Visible;
ResultsDisplay.IsExpanded = true;
_drawSurface.IsEnabled = false;
}
private void QueryTask_Failed(object sender, TaskFailedEventArgs args)
{
MessageBox.Show("Query failed: " + args.Error);
}
Right now I would just like to just display and pass the PARCELID to a textblock that will display in my app; once I get this working I can move on to the next piece.Here's what I'm trying and It is not working out.
private void FeatureDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var graphics = (sender as ESRI.ArcGIS.Client.Toolkit.FeatureDataGrid).SelectedGraphics;
foreach (var g in graphics)
{
// get id
var id = g.Attributes["PARCELID"];
// TODO: retrieve outside data for this id
PARCELIDPASS.Text = string.Format("The ParcelID passed is {1}", id);
break;
}
}
In my XAML I have:
<TextBlock x:Name="PARCELIDPASS" Text="" Foreground="Red" FontWeight="SemiBold" Margin="0,5,0,5" HorizontalAlignment="Center" TextWrapping="Wrap"/>