<!-- RELATED LINK RESOURCE--> <common:HierarchicalDataTemplate x:Key="TreeViewItemTemplate"> <StackPanel Orientation="Horizontal" Margin="0"> <!--<Ellipse Fill="Transparent" Height="6" Width="6" StrokeThickness="2" Stroke="Black" Margin="0,0,10,0"/>--> <TextBlock Text="APN: " HorizontalAlignment="Left" FontSize="10" Margin="0"/> <TextBlock x:Name="TextBlockRelate" Text="{Binding Attributes[APN]}" HorizontalAlignment="Left" FontSize="10"/> </StackPanel> </common:HierarchicalDataTemplate> <!--END RELATED LINK RESOURCE-->
<!-- GRID FOR RELATED (AP) --> <userControls:DraggableWindow x:Name="RelateResultsDisplay" IsOpen="False" VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="15" Effect="{StaticResource dropShadow}" Title="RELATED WORK RESULTS TABLE" Background="Black"> <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="Auto" > <Border Effect="{StaticResource miniDropShadow}" Style="{StaticResource RibbonElementBorder}" Padding="15" Margin="10"> <Grid x:Name="RelatedRowsGrid" HorizontalAlignment="Right" VerticalAlignment="Top" MinHeight="170" Width="Auto"> <Grid.ColumnDefinitions> <ColumnDefinition Width="140" /> <ColumnDefinition MaxWidth="600" /> </Grid.ColumnDefinitions> <StackPanel Orientation="Vertical" Margin="1,-5,1,5"> <TextBlock Margin="1,0,5,1" TextWrapping="Wrap" Grid.Column="0" Text="Click to see relates: " FontSize="10" FontFamily="Arial" Foreground="#FFFFFFFF" /> <basics:TreeView x:Name="SelectedWellsTreeView" MaxHeight="180" Grid.Column="0" Margin="1" ItemsSource="{Binding}" BorderBrush="Gray" BorderThickness=".5" SelectedItemChanged="SelectedWellsTreeView_SelectedItemChanged" ItemTemplate="{StaticResource TreeViewItemTemplate}" /> </StackPanel> <esriWidgets:FeatureDataGrid Grid.Column="1" Grid.Row="1" x:Name="MyFDG" Height="180" Style="{StaticResource FeatureDataGridRelateStyle1}" /> </Grid> </Border> </Grid> </userControls:DraggableWindow> <!--END GRID FOR RELATED (AP) -->
//For FDG -- Jennifer's code // l = Map.Layers["AP"] as FeatureLayer; l = new FeatureLayer() { ID = "MyLayer", Url = "http://myserver/ArcGIS/rest/services/Relate/FeatureServer/1", Mode = FeatureLayer.QueryMode.Snapshot, }; l.OutFields.Add("*"); l.Initialized += (s, e) => { if (l.InitializationFailure != null) MessageBox.Show(l.InitializationFailure.Message); }; l.InitializationFailed += (s, e) => { if (l.InitializationFailure != null) MessageBox.Show(l.InitializationFailure.Message); }; l.Initialized += new EventHandler<EventArgs>(l_Initialized); l.Initialize(); MyFDG.GraphicsLayer = l; MyFeatureDataForm.FeatureLayer = l; queryTask = new QueryTask("http://dgpdch03/ArcGIS/rest/services/Relate/MapServer/0"); queryTask.ExecuteCompleted += QueryTask_ExecuteCompleted; queryTask.ExecuteRelationshipQueryCompleted += QueryTask_ExecuteRelationshipQueryCompleted; queryTask.Failed += QueryTask_Failed; //End for relate
//CODE FROM JOE, JENNIFER, AND INTERACTIVE SDK void l_Initialized(object sender, EventArgs e) { var l = sender as FeatureLayer; l.Initialized += (s, f) => { l.UpdateCompleted += UpdateCompleted; l.UpdateFailed += UpdateFailed; l.Update(); }; } private void UpdateFailed(object sender, TaskFailedEventArgs e) { MessageBox.Show(e.Error.Message); } private void UpdateCompleted(object sender, EventArgs e) { MessageBox.Show("WooHoo!"); } FeatureLayer l; private void deleterowButton_Click(object sender, System.Windows.RoutedEventArgs e) { if (l != null && l.LayerInfo != null && l.LayerInfo.Fields != null) { l.Graphics.Remove(MyFDG.SelectedGraphics[0]); } } private void addrowButton_Click(object sender, RoutedEventArgs e) { var g = new Graphic(); if (l != null && l.LayerInfo != null && l.LayerInfo.Fields != null) { foreach (var f in l.LayerInfo.Fields) { g.Attributes[f.Name] = null; g.Attributes["GEN_PLAN"] = "GPk"; g.Attributes["APN"] = relateIDstring; } } else { } l.Graphics.Add(g); } private void SelectedWellsTreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e) { if (e.OldValue != null) { Graphic g = e.OldValue as Graphic; g.UnSelect(); g.SetZIndex(0); } if (e.NewValue != null) { Graphic g = e.NewValue as Graphic; g.Select(); g.SetZIndex(1); RelationshipParameter relationshipParameters = new RelationshipParameter() { ObjectIds = new int[] { Convert.ToInt32(g.Attributes[SelectedWellsTreeView.Tag as string]) }, OutFields = new string[] { "*" }, RelationshipId = 0, OutSpatialReference = Map.SpatialReference, }; queryTask.ExecuteRelationshipQueryAsync(relationshipParameters); relateIDstring = g.Attributes["APN"].ToString(); } } void QueryTask_ExecuteRelationshipQueryCompleted(object sender, RelationshipEventArgs e) { RelationshipResult pr = e.Result; if (pr.RelatedRecordsGroup.Count == 0) { l.Where = "1=0"; //remember _featureLayer is l } else { foreach (var pair in pr.RelatedRecordsGroup) { IEnumerable<Graphic> graphics = e.Result.RelatedRecordsGroup.First().Value; l.Where = null; //remember _featureLayer is l int[] objectIds = graphics.Select(g => (int)g.Attributes["OBJECTID_1"]).ToArray(); //now set the ObjectIDs on our FeatureLayer l.ObjectIDs = objectIds; } } l.Update(); MyFDG.GraphicsLayer = l; // MyFeatureDataForm.FeatureLayer = l; //HERE"S WHERE I THOUGHT I COULD JUST SET FEATUREDATAFORM }
<Border x:Name="FeatureDataFormBorder" Visibility="Visible" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="10,10,10,0" Width="300" Height="300" > <Border.Effect> <DropShadowEffect Color="Black" Direction="-45" BlurRadius="20" Opacity=".75" /> </Border.Effect> <esri:FeatureDataForm x:Name="MyFeatureDataForm" IsReadOnly="False" LabelPosition="Left" /> </Border>
Solved! Go to Solution.
if (l != null) { if (l.SelectionCount == 1) { foreach (Graphic g in l.SelectedGraphics) { MyFeatureDataForm.GraphicSource = g; } } }
private void SeeRelateButton_Click(object sender, RoutedEventArgs e) { if (MyFDG.SelectedItems.Count == 1) { foreach (var g in MyFDG.SelectedItems) { MyFeatureDataForm.GraphicSource = g as Graphic; } } if (l != null) { MessageBox.Show(l.SelectionCount.ToString()); foreach (Graphic g in l) { MyFeatureDataForm.GraphicSource = g; } }
if (l != null) { if (l.SelectionCount == 1) { foreach (Graphic g in l.SelectedGraphics) { MyFeatureDataForm.GraphicSource = g; } } }