Select to view content in your preferred language

weird feature layer problem

698
2
02-01-2012 10:21 AM
ForamParikh
Regular Contributor
Hello everyone one small thing is making me crazy please help me.everything is working fine on button event but same thing is not working on page load or even i have written the same thing on featurelayer_inizialized but it is not working.
Here is xmal code,

    <Grid >
        <Grid.Resources>          
            <esri:SimpleMarkerSymbol x:Key="DefaultpointSymbol" Color="Green" Style="Circle" Size="12"     >
            </esri:SimpleMarkerSymbol>
            <esri:SimpleLineSymbol x:Key="DefaultLineSymbol" Color="Red" Width="2" />
            <esri:SimpleFillSymbol x:Key="DefaultPolygonSymbol" Fill="Green" BorderBrush="Blue" BorderThickness="2" />
            <esri:SimpleFillSymbol x:Key="DefaultFillSymbol" Fill="Red" BorderBrush="Red" BorderThickness="2" />
            <esri:SimpleFillSymbol x:Key="DefaultBufferSymbol" Fill="Yellow" BorderBrush="Yellow" BorderThickness="2"  />
            <esri:SimpleFillSymbol x:Key="blackfill" Fill="Black" BorderBrush="Black" BorderThickness="2"  />
            <esri:SimpleFillSymbol x:Key="multifill" Fill="Purple" BorderBrush="Purple" BorderThickness="2"  />
            <esri:MarkerSymbol x:Key="esriDefaultMarker_40" OffsetX="6.5" OffsetY="6.5">
                <esri:MarkerSymbol.ControlTemplate>
                    <ControlTemplate>
                        <Grid RenderTransformOrigin="0.5,0.5">
                            <Grid.RenderTransform>
                                <TransformGroup>
                                    <ScaleTransform ScaleX="1" ScaleY="1" />
                                </TransformGroup>
                            </Grid.RenderTransform>
                            <Ellipse Width="13" Height="13" Stroke="Green" StrokeThickness="2" Fill="Red" HorizontalAlignment="Center" VerticalAlignment="Center" />
                        </Grid>
                    </ControlTemplate>
                </esri:MarkerSymbol.ControlTemplate>
            </esri:MarkerSymbol>
            <esri:UniqueValueRenderer x:Name="MyUniqueValueRenderer" Attribute="PROJSTAT" >
                <esri:UniqueValueRenderer.Infos>
                    <esri:UniqueValueInfo Value="P" Label="Process" Symbol="{StaticResource DefaultPolygonSymbol}" />
                    <esri:UniqueValueInfo Value="C" Label="Completed" Symbol="{StaticResource DefaultFillSymbol}" />
                    <esri:UniqueValueInfo Value="F" Label="Funded" Symbol="{StaticResource DefaultBufferSymbol}" />
                    <esri:UniqueValueInfo Value="O" Label="Ongoing" Symbol="{StaticResource blackfill}" />
                    <esri:UniqueValueInfo Value="M" Label="Multiple" Symbol="{StaticResource multifill}" />
                </esri:UniqueValueRenderer.Infos>
            </esri:UniqueValueRenderer>
        </Grid.Resources>
        <esri:Map x:Name="MyMap"    Extent="-13249239.0000,3982263.0000,-13087512.0000,4087355.0000" >
            <esri:ArcGISTiledMapServiceLayer ID="StreetMapLayer"
                Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"
                />

          
            <esri:FeatureLayer ID="polygonlayer"
                                 Initialized="FeatureLayer_Initialized"
                               Url="http://pipelineforthefuture.org/ArcGIS/rest/services/GIC4/Poly1/MapServer/0"  
                               OutFields="*"  
                                />
            <esri:GraphicsLayer ID="glayer" Renderer="{StaticResource MyUniqueValueRenderer}"></esri:GraphicsLayer>

        </esri:Map>
        <Button Content="Button" Height="36" HorizontalAlignment="Left" Margin="28,46,0,0" Name="button1" VerticalAlignment="Top" Width="193" Click="button1_Click" />
    </Grid>

------

here is code behind
public partial class About : Page
    {
        public About()
        {
            InitializeComponent();
            QueryTask queryTask =
               new QueryTask("http://pipelineforthefuture.org/ArcGIS/rest/services/GIC4/polyjoint/MapServer/1");
            queryTask.ExecuteCompleted += QueryTask_ExecuteCompleted;
            ESRI.ArcGIS.Client.Tasks.Query query = new ESRI.ArcGIS.Client.Tasks.Query();

            query.Where = "1=1";
            query.OutFields.Add("*");
            queryTask.ExecuteAsync(query);
           
        }

      

        // Executes when the user navigates to this page.
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
        }
        private void FeatureLayer_Initialized(object sender, EventArgs e)
        {
            MessageBox.Show((sender as FeatureLayer).Graphics.Count.ToString());
            QueryTask queryTask =
                new QueryTask("http://pipelineforthefuture.org/ArcGIS/rest/services/GIC4/polyjoint/MapServer/1");
            queryTask.ExecuteCompleted += QueryTask_ExecuteCompleted;          
            ESRI.ArcGIS.Client.Tasks.Query query = new ESRI.ArcGIS.Client.Tasks.Query();
           
            query.Where = "1=1";
            query.OutFields.Add("*");
            queryTask.ExecuteAsync(query);


        }
        void QueryTask_ExecuteCompleted(object sender, ESRI.ArcGIS.Client.Tasks.QueryEventArgs args)
        {
        
            FeatureSet featureSet = args.FeatureSet;
            Graphic g;
            Graphic ggl;
            if (featureSet != null && featureSet.Features.Count > 0)
            {
               

                IList<Graphic> gsort = featureSet.Features.OrderBy(x => x.Attributes["GIC4.DBO.PROJECT_INFO.PROJ_NAME"]).ToList();
                featureSet.Features.Clear();
                foreach (var g11 in gsort)
                {
                    featureSet.Features.Add(g11);
                }

                GraphicsLayer gl = MyMap.Layers["glayer"] as GraphicsLayer;

                foreach (Graphic graphic in args.FeatureSet.Features)
                {
                    g = new Graphic();
                    FeatureLayer fl = MyMap.Layers["polygonlayer"] as FeatureLayer;                
                                       
                    g = fl.Graphics.FirstOrDefault(gtt => gtt.Attributes["LOCATION_ID"] != null && (int)gtt.Attributes["LOCATION_ID"] == int.Parse(graphic.Attributes["GIC4.DBO.PROJECT_LOCATION_POLY.LOCATION_ID"].ToString()));

                    ggl = new Graphic();
                    if (g != null)
                    {
                        ggl.Geometry = g.Geometry;                      
                        ggl.Attributes.Add("PROJSTAT", graphic.Attributes["GIC4.DBO.PROJECT_INFO.PROJSTAT"].ToString());
                        gl.Graphics.Add(ggl);
                    }


                }


            }
            else
                MessageBox.Show("No features returned from query");

        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
           
            QueryTask queryTask =
                new QueryTask("http://pipelineforthefuture.org/ArcGIS/rest/services/GIC4/polyjoint/MapServer/1");
            queryTask.ExecuteCompleted += QueryTask_ExecuteCompleted;
            ESRI.ArcGIS.Client.Tasks.Query query = new ESRI.ArcGIS.Client.Tasks.Query();

            query.Where = "1=1";
            query.OutFields.Add("*");
            queryTask.ExecuteAsync(query);
        }

      
    }

---------
please help,

here if you click on button you will see graphical layer but same thing is not working on page load or on featurelayer_inizialize event or even on page load i want everything on page load.

Thanks
Foram
0 Kudos
2 Replies
JenniferNery
Esri Regular Contributor
It's quite a long code to go through, can you be specific what "not working" means? You can monitor webrequests using Fiddler to see if there are any failure. Does map load fine? Features retrieved fine? What part of query fails? All that maybe answered when you have Fiddler on. You can also try setting breakpoints to check if your code is hit when expected.
0 Kudos
DominiqueBroux
Esri Frequent Contributor
Answer here : http://forums.arcgis.com/threads/48796-can-t-retrieve-features-on-page-load

Sidenote : please avoid posting twice the same question!
0 Kudos