POST
|
Ah, your using our Silverlight API v1.x, that makes a big difference. If you ever get the chance to upgrade to our current version a lot of what you are trying to do would be a lot easier to accomplish. Glad you got it all worked out.
... View more
01-10-2012
10:37 AM
|
0
|
0
|
555
|
POST
|
As far as I can tell everything looks fine, only thing you didn't provide is the map tag so that I confirm you named your map correctly. <esriMap x:Name="MyMap" >. Is editing allowed on the service? Could you paste the entire mainpage.xaml.
... View more
01-10-2012
10:16 AM
|
0
|
0
|
512
|
POST
|
The for loop I used only makes sense when you are dealing with adding 1 geometry at a time. i.e. (FeatureLayer.AutoSave = true). I wouldn't use FeatureDataForm like that in cases where multiple geometry is being added. I noticed you are using a different FeatureDataForm per geometry type. you can get by with only 1 FeatureDataForm.
myFeatureDataForm.GraphicSource = change.Geometry
myFeatureDataForm.FeatureLayer = change.Layer as FeatureLayer;
You should also check out the EditorWidget control becasue it allows for creating geometry and opening a feature data form for attribute entry as well, along with lots of other features such as creating geometry, deleting, moving , rotating, adding vertices(polygons, polylines), removing vertices, moving vertices, scaling, attribute editing, etc... These are the two main sources for our API our interactive samples which you know about and our library reference for out API. Silverlight SDK Samples http://help.arcgis.com/en/webapi/silverlight/samples/start.htm Silverlight API Reference http://help.arcgis.com/en/webapi/silverlight/apiref/api_start.htm
... View more
01-10-2012
09:59 AM
|
0
|
0
|
611
|
POST
|
if (e.Action == ESRI.ArcGIS.Client.Editor.EditAction.Add)
{
foreach (ESRI.ArcGIS.Client.Editor.Change change in e.Edits)
{
MyFeatureDataForm.GraphicSource = change.Graphic; // this is the newly added graphic
}
}
... View more
01-10-2012
08:24 AM
|
0
|
0
|
611
|
POST
|
The Editor class has an event called "EditCompleted" that you can subscribe to and listen for all "Add" actions then you can get the graphic that was added to the layer and open the FeatureDataForm allow the user to add attributes to the graphic. this will allow you to automatically get the graphic when the user is done drawing and prompt them for attribute information.
private void Editor_EditCompleted(object sender, ESRI.ArcGIS.Client.Editor.EditEventArgs e)
{
if (e.Action == ESRI.ArcGIS.Client.Editor.EditAction.Add)
{
// e.Edits contains graphics that was added and the layer the graphic was added to
}
}
... View more
01-09-2012
11:23 AM
|
0
|
0
|
611
|
POST
|
Hi Ravi, When copying the graphic you need to use the Clone() method or you will have two references to the same graphic, when you try to add the second graphic reference to another GraphicsLayer our API will throw an exception because it knows that the graphic belongs to a different GraphicsLayer already. If you want to copy to a new GraphicsLayer you can make a new instance like below. Graphic myGraphic = new Graphic(); myGraphic.Geometry = selectedGraphic.Geometry.Clone(); My question to you is why are you going to this length in the first place. If you are using FeatureLayer with graphics comming from a FeatureServer then a selection color is built into the FeatureLayer and all you have to do is set myGraphic.Selected = true and the renderer associated with the FeatureLayer will change the selection color for you. then when you set MyGraphic.Selected = false the color will change back. If you are using a GraphicsLayer you will need to add selection state to your symbols using this SDK Sample http://help.arcgis.com/en/webapi/silverlight/samples/start.htm#SelectGraphics
... View more
01-09-2012
09:45 AM
|
0
|
0
|
555
|
POST
|
try adding the following assemblies to your project and then building. System.Windows.Controls.dll System.Windows.Controls.Data.dll System.Windows.Controls.Data.Input.dll
... View more
01-09-2012
08:43 AM
|
0
|
0
|
167
|
POST
|
Hello Mark, I have a solution for you provided you are using couple of things in your application. 1. FeatureDataGrid 2. FeatureLayer 3. EditorWidget What I would suggest is you set turn AutoSave=false on your feature layer, when AutoSave=true(which is the default) all newly created Graphics/Geometry will get pushed to the server as a new item. Having AutoSave=False will allow you to create the geometry then associate with the record/row you want then use a button click to Update the record with the geometry. A Graphic object contains geometry and fields/attributes. Your feature layer should have graphics with attributes but the geometry is null. Graphic.Attributes <-- Your fields/columns in you database. Graphic.Attributes["OBJECTID"] is the primaryKey Graphic.Geometry <-- Polyline, Polygon, MapPoint 1 : Draw your new graphic using the editor control. 2 : Select the new graphic and get the geometry (newGraphic.Geometry) 3 : Set the geometry of the new graphic to the existing graphic. (existingGraphic.Geometry = newGraphic.Geometry) 4 : Delete the newGraphic you created because it is no longer needed. if you don't it will create a new record in your database which you don't want. 5 : Call myFeatureLayer.SaveEdits() <-- this will update the changes you have made back to the server. Here is a link to our SDK where you can see examples of how to edit graphics attributes and geometry. http://help.arcgis.com/en/webapi/silverlight/samples/start.htm
... View more
12-09-2011
03:53 PM
|
0
|
0
|
228
|
POST
|
The FeatureDataForm only works off the Domains that come from the FeatureLayer.LayerInfo. You have to add the new CodedValueDomain to your service then republish the service with the additional CodedValueDomains.
... View more
11-14-2011
07:34 AM
|
0
|
0
|
246
|
POST
|
Editor editor = LayoutRoot.Resources["MyEditor"] as Editor;
foreach (GraphicsLayer graphicsLayer in editor.GraphicsLayers)
{
if (graphicsLayer is FeatureLayer)
{
foreach (Graphic g in graphicsLayer.SelectedGraphics)
{
g.Attributes["isDeleted"] = 1;
}
FeatureLayer flayer = graphicsLayer as FeatureLayer;
flayer.SaveEdits();
flayer.SaveEditsFailed += new EventHandler<ESRI.ArcGIS.Client.Tasks.TaskFailedEventArgs>(flayer_SaveEditsFailed);
}
} By default FeatureLayer.AutoSave = true which means you don't have to call SaveEdits() to push your change back to the service. As soon as you edit the graphic the feature layer will push the changes back to the service. If you set FeatureLayer.AutoSave = false then you have to call SaveEdits() and you see FeatureLayer.HasEdits = true when you make changes. Also you can wire up EndSaveEdits to see when something is getting saved back through the service. Editor editor = LayoutRoot.Resources["MyEditor"] as Editor;
foreach (GraphicsLayer graphicsLayer in editor.GraphicsLayers)
{
if (graphicsLayer is FeatureLayer)
{
foreach (Graphic g in graphicsLayer.SelectedGraphics)
{
g.Attributes["isDeleted"] = 1;
}
FeatureLayer flayer = graphicsLayer as FeatureLayer;
flayer.EndSaveEdits += new EventHandler<ESRI.ArcGIS.Client.Tasks.EndEditEventArgs>(flayer_EndSaveEdits);
flayer.SaveEditsFailed += new EventHandler<ESRI.ArcGIS.Client.Tasks.TaskFailedEventArgs>(flayer_SaveEditsFailed);
flayer.SaveEdits(); // <-- only need to call this if AutoSave is false
}
}
... View more
11-02-2011
09:40 AM
|
0
|
0
|
527
|
POST
|
Create a new Graphic and populate the Graphic.Attributes dictionary with the values, then add the graphic to your featurelayer. If AutoSave = true on you feature layer the graphic will be pushed back to your table. If AutoSave = false on your feature layer you will have to call FeatureLayer.SaveEdits() Example: Say your table has two fields, FirstName (text) and Age(integer). your graphic would look like this. Graphic graphic = new Graphic() graphic.Attributes.Add("FirstName","John"); graphic.Attributes.Add("Age", 25); MyFeatureLayer.Graphics.Add(graphic) MyFeatureLayer.SaveEdits() // <-- only need if MyFeatureLayer.AutoSave = false;
... View more
11-01-2011
01:21 PM
|
0
|
0
|
235
|
POST
|
You need to add OutFields to your FeatureLayer so that the attributes show up. Here is a basic Editing example with source code and xaml. http://help.arcgis.com/en/webapi/silverlight/samples/start.htm#ToolkitEditorWidget
... View more
11-01-2011
08:24 AM
|
0
|
0
|
413
|
POST
|
Hi all, I have used the above code sample and replaced it with a 9.3.1 routing service. I tested the sample with 1.2, 2.0 and 2.1 Silverlight API and have not been able to reproduce the error mentioned. The problem may be with the Routing service itself. If someone has a public service they don't mind sharing i would be happy to test against their service. .Chris
... View more
10-20-2011
09:58 AM
|
0
|
0
|
463
|
POST
|
<UserControl x:Class="ArcGISSilverlightSDK.KmlLayerSimple"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:esri="http://schemas.esri.com/arcgis/client/2009">
<Grid x:Name="LayoutRoot" >
<esri:Map x:Name="MyMap" WrapAround="True">
<esri:Map.Extent>
<esri:Envelope XMin="-122.090" YMin="37.419" XMax="-122.079" YMax="37.424">
<esri:Envelope.SpatialReference>
<esri:SpatialReference WKID="4326"/>
</esri:Envelope.SpatialReference>
</esri:Envelope>
</esri:Map.Extent>
<esri:ArcGISTiledMapServiceLayer Url="http://services.arcgisonline.com/ArcGIS/rest/services/ESRI_Imagery_World_2D/MapServer" />
<esri:KmlLayer ID="KmlLayer" Url="http://kml-samples.googlecode.com/svn/trunk/KML_Samples.kml"
ProxyUrl="http://serverapps.esri.com/SilverlightDemos/ProxyPage/proxy.ashx" />
</esri:Map>
</Grid>
</UserControl>
... View more
10-12-2011
12:11 PM
|
0
|
0
|
291
|
POST
|
Did you add the ESRI.ArcGIS.Client.Toolkit.Datasources.dll to your project references?
... View more
10-12-2011
11:56 AM
|
0
|
0
|
291
|
Online Status |
Offline
|
Date Last Visited |
11-11-2020
02:23 AM
|