<UserControl x:Class="StandaloneTableEditing.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:esri="http://schemas.esri.com/arcgis/client/2009" xmlns:df="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.DataForm.Toolkit" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400"> �??- note the SL toolkit package is used here �?� <Grid x:Name="LayoutRoot" Background="White"> <Grid x:Name="MyForm"> <Grid.RowDefinitions> <RowDefinition Height="40" ></RowDefinition> <RowDefinition></RowDefinition> </Grid.RowDefinitions> <TextBlock Text="Silverlight Standalone Table Editing" Margin="10" FontSize="14" > </TextBlock> <df:DataForm x:Name="myDataForm" AutoEdit="False" CommandButtonsVisibility="All" Grid.Row="1" Width="400" Height="300" Margin="10" HorizontalAlignment="Left" VerticalAlignment="Top" > </df:DataForm> </Grid> </Grid> </UserControl>
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using ESRI.ArcGIS.Client; using System.ComponentModel; //Check to aake sure the System.ComponentModel reference has been added namespace StandaloneTableEditing { public partial class MainPage : UserControl { public string Owner { get; set; } public int Value { get; set; } public string Approved { get; set; } public int Lastupdate { get; set; } public Inspection inspection { get; set; } public FeatureLayer featurelayer { get; set; } public MainPage() { InitializeComponent(); InitializeFeatureService(); InitializeInspection(); myDataForm.CurrentItem = inspection; // Set up data form with data using the set Inspection Class below } private void InitializeInspection() { //Set up default values inspection = new Inspection() { Owner = "David Hasselhoff ", Value = 100, Approved = "Bay Watch", Lastupdate = 1111, InspectionFeatureLayer = featurelayer }; } public void InitializeFeatureService() { featurelayer = new FeatureLayer(); featurelayer.Url = "http://serverbox/ArcGIS/rest/services/EditingTables/FeatureServer/1"; featurelayer.AutoSave = false; featurelayer.Mode = FeatureLayer.QueryMode.OnDemand; featurelayer.Initialized += Table_IsInitialized; featurelayer.Initialize(); featurelayer.EndSaveEdits += Insert_EndSaveEdits; featurelayer.SaveEditsFailed += Insert_SaveEditsFailed; } public void Table_IsInitialized(object sender, EventArgs e) { System.Diagnostics.Debug.WriteLine("it's initialized..."); } public void Insert_SaveEditsFailed(object sender, EventArgs e) { string mes = e.ToString(); // For debugging System.Diagnostics.Debug.WriteLine(mes); } public void Insert_EndSaveEdits(object sender, EventArgs e) { string mes = e.ToString(); // For debugging System.Diagnostics.Debug.WriteLine(mes); } } public class Inspection : IEditableObject { public string Owner { get; set; } public int Value { get; set; } public string Approved { get; set; } public int Lastupdate { get; set; } public Inspection TempInspection { get; set; } public FeatureLayer InspectionFeatureLayer; public void BeginEdit() { // Save current Values TempInspection = new Inspection() { Owner = this.Owner, Value = this.Value, Approved = this.Approved, Lastupdate = this.Lastupdate }; } public void CancelEdit() { // Reset Values Owner = TempInspection.Owner; Value = TempInspection.Value; Approved = TempInspection.Approved; Lastupdate = TempInspection.Lastupdate; } public void EndEdit() { ESRI.ArcGIS.Client.Graphic graphicAttribute = new ESRI.ArcGIS.Client.Graphic(); graphicAttribute.Attributes.Add("OWNER", this.Owner); graphicAttribute.Attributes.Add("VALUE", this.Value); graphicAttribute.Attributes.Add("APPROVED", this.Approved); graphicAttribute.Attributes.Add("LASTUPDATE", this.Lastupdate); InspectionFeatureLayer.Graphics.Add(graphicAttribute); InspectionFeatureLayer.SaveEdits(); } } }
l.Initialized += new EventHandler<EventArgs>(l_Initialized); } void l_Initialized(object sender, EventArgs e) { var l = sender as FeatureLayer; l.Update(); }
l.Initialized += (s, e) => { l.Update(); };
<UserControl x:Class="SilverlightApplication1.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:basics="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:esri="http://schemas.esri.com/arcgis/client/2009"> <Grid x:Name="LayoutRoot" Background="White"> <Grid.Resources> <esri:SimpleMarkerSymbol x:Key="RedMarkerSymbol" Color="Red" Size="12" Style="Circle" /> <esri:SimpleMarkerSymbol x:Key="BlackMarkerSymbol" Color="Black" Size="14" Style="Diamond" /> <esri:PictureMarkerSymbol x:Key="GlobePictureSymbol" OffsetX="8" OffsetY="8" Source="/Assets/images/globe-16x16.png" /> <esri:SimpleLineSymbol x:Key="DefaultLineSymbol" Color="Green" Style="DashDot" Width="4" /> <esri:SimpleFillSymbol x:Key="DefaultFillSymbol" Fill="Green" BorderBrush="Blue" BorderThickness="3" /> </Grid.Resources> <Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="5" /> <RowDefinition Height="150" /> </Grid.RowDefinitions> <esri:Map x:Name="MyMap" WrapAround="True"> <esri:FeatureLayer ID="IncidentsLayer" Url="http://mcesapp/ArcGIS/rest/services/EditRelTbl/FeatureServer/1" DisableClientCaching="True" Mode="OnDemand" AutoSave="True" OnDemandCacheSize="0" OutFields="*"> </esri:FeatureLayer> <esri:GraphicsLayer ID="MySelectionGraphicsLayer"/> </esri:Map> <basics:GridSplitter Grid.Row="1" HorizontalAlignment="Stretch" /> <esri:FeatureDataGrid Grid.Row="2" x:Name="MyDataGrid" Map="{Binding ElementName=MyMap}" GraphicsLayer="{Binding ElementName=MyMap, Path=Layers.[IncidentsLayer]}"/> <Grid HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,10,10,0" > <Rectangle Fill="#77919191" Stroke="Gray" RadiusX="10" RadiusY="10" Margin="0,0,0,5" > <Rectangle.Effect> <DropShadowEffect/> </Rectangle.Effect> </Rectangle> <Rectangle Fill="#FFFFFFFF" Stroke="DarkGray" RadiusX="5" RadiusY="5" Margin="10,10,10,15" /> <!--<TextBlock x:Name="ResponseTextBlock" Text="Edit values in the data grid. When finished, click the Commit button to save to the database." Width="200" TextAlignment="Left" Margin="30,20,20,30" TextWrapping="Wrap" />--> </Grid> <Grid HorizontalAlignment="Center" VerticalAlignment="Top" Margin=" 10,10,10,0"> <StackPanel Orientation="Horizontal" Margin="5,0,15,0" Canvas.Top="25" > <TextBlock Text="US State Name contains:" Margin="10,0,0,0" VerticalAlignment="Center"/> <TextBox x:Name="StateNameTextBox" Text="New" Height="23" HorizontalAlignment="Left" VerticalAlignment="Center" Width="125" TextWrapping="NoWrap" Margin="10,0,10,0" FontSize="12" Background="White" AcceptsReturn="False" /> <Button Content="Do Query" Width="75" VerticalAlignment="Center" HorizontalAlignment="Right" Click="QueryButton_Click" Margin="0,0,10,0" Cursor="Hand" /> <Button Content="Commit" Width="75" VerticalAlignment="Center" HorizontalAlignment="Right" Click="Button_Click" Margin="0,0,10,0" Cursor="Hand" /> </StackPanel> </Grid> <Grid HorizontalAlignment="Right" VerticalAlignment="Top" Margin="10,10,10,0" > <Rectangle Fill="#77919191" Stroke="Gray" RadiusX="10" RadiusY="10" Margin="0,0,0,5" > <Rectangle.Effect> <DropShadowEffect/> </Rectangle.Effect> </Rectangle> <Rectangle Fill="#FFFFFFFF" Stroke="DarkGray" RadiusX="5" RadiusY="5" Margin="10,10,10,15" /> </Grid> </Grid> </UserControl>
Imports Microsoft.VisualBasic Imports System.Collections.Generic Imports System.Windows Imports System.Windows.Controls Imports ESRI.ArcGIS.Client Imports ESRI.ArcGIS.Client.Tasks Imports ESRI.ArcGIS.Client.Symbols Imports ESRI.ArcGIS.Client.Toolkit Imports ESRI.ArcGIS.Client.Geometry Partial Public Class MainPage Inherits UserControl Private Property featurelayer() As FeatureLayer Get Return m_featurelayer End Get Set(ByVal value As FeatureLayer) m_featurelayer = value End Set End Property Private m_featurelayer As FeatureLayer Public Sub New() InitializeComponent() initializefeatureservice() End Sub Public Sub initializefeatureservice() Dim featurelayer As New FeatureLayer() featurelayer.Url = "http://mcesapp/ArcGIS/rest/services/EditRelTbl/FeatureServer/1" featurelayer.AutoSave = True featurelayer.Mode = featurelayer.QueryMode.OnDemand featurelayer.Update() featurelayer.Initialize() End Sub Private Sub LoadFeatureLayer() Dim l As ESRI.ArcGIS.Client.FeatureLayer l = New ESRI.ArcGIS.Client.FeatureLayer l.Url = "http://mcesapp/ArcGIS/rest/services/EditRelTbl/FeatureServer/1" Dim s As String s = StateNameTextBox.Text l.Where = "REL_FACILITYID = '" & s & "'" l.OutFields.Add("*") l.AutoSave = False AddHandler l.Initialized, AddressOf layerInit l.Initialize() End Sub Private Sub layerInit(ByVal sender As Object, ByVal args As EventArgs) 'Load layer information class. If (sender.GetType Is GetType(FeatureLayer)) Then Dim Lay As FeatureLayer = CType(sender, FeatureLayer) Lay.Update() End If End Sub Private Sub QueryButton_Click(ByVal sender As Object, ByVal e As RoutedEventArgs) Dim queryTask As New QueryTask("http://mcesapp/ArcGIS/rest/services/EditRelTbl/FeatureServer/1") AddHandler queryTask.ExecuteCompleted, AddressOf QueryTask_ExecuteCompleted AddHandler queryTask.Failed, AddressOf QueryTask_Failed Dim query As New ESRI.ArcGIS.Client.Tasks.Query() 'query.Text = StateNameTextBox.Text query.ReturnGeometry = False Dim s As String s = StateNameTextBox.Text 'MessageBox.Show(s) query.Where = "REL_FACILITYID = '" & s & "'" ' query.Where = StateNameTextBox.Text query.OutFields.Add("*") queryTask.ExecuteAsync(query) End Sub Private Sub QueryTask_ExecuteCompleted(ByVal sender As Object, ByVal args As ESRI.ArcGIS.Client.Tasks.QueryEventArgs) Dim featureSet As FeatureSet = args.FeatureSet featureSet.SpatialReference = MyMap.SpatialReference() If featureSet IsNot Nothing AndAlso featureSet.Features.Count > 0 Then MyDataGrid.ItemsSource = featureSet.Features Else MessageBox.Show("No features returned from query") End If Dim graphicsLayer As GraphicsLayer = TryCast(MyMap.Layers("MySelectionGraphicsLayer"), GraphicsLayer) graphicsLayer.ClearGraphics() If featureSet IsNot Nothing AndAlso featureSet.Features.Count > 0 Then For Each feature As Graphic In featureSet.Features feature.Symbol = TryCast(LayoutRoot.Resources("RedMarkerSymbol"), SimpleMarkerSymbol) graphicsLayer.Graphics.Add(feature) Next feature End If Dim bind As System.Windows.Data.Binding = New System.Windows.Data.Binding() bind.ElementName = "MyMap" bind.Path = New PropertyPath("Layers.[MySelectionGraphicsLayer]") MyDataGrid.SetBinding(FeatureDataGrid.GraphicsLayerProperty, bind) MyDataGrid.UpdateLayout() End Sub Private Sub QueryTask_Failed(ByVal sender As Object, ByVal args As TaskFailedEventArgs) MessageBox.Show("Query execute error: " & args.Error.Message) End Sub Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) m_featurelayer.Update() End Sub End Class
<UserControl x:Class="SilverlightApplication1.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:basics="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:esri="http://schemas.esri.com/arcgis/client/2009"> <Grid x:Name="LayoutRoot" Background="White"> <Grid.Resources> <esri:SimpleMarkerSymbol x:Key="RedMarkerSymbol" Color="Red" Size="12" Style="Circle" /> <esri:SimpleMarkerSymbol x:Key="BlackMarkerSymbol" Color="Black" Size="14" Style="Diamond" /> <esri:PictureMarkerSymbol x:Key="GlobePictureSymbol" OffsetX="8" OffsetY="8" Source="/Assets/images/globe-16x16.png" /> <esri:SimpleLineSymbol x:Key="DefaultLineSymbol" Color="Green" Style="DashDot" Width="4" /> <esri:SimpleFillSymbol x:Key="DefaultFillSymbol" Fill="Green" BorderBrush="Blue" BorderThickness="3" /> </Grid.Resources> <Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="5" /> <RowDefinition Height="150" /> </Grid.RowDefinitions> <basics:GridSplitter Grid.Row="1" HorizontalAlignment="Stretch" /> <esri:FeatureDataGrid Grid.Row="2" x:Name="MyDataGrid"/> <Grid HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,10,10,0" > <Rectangle Fill="#77919191" Stroke="Gray" RadiusX="10" RadiusY="10" Margin="0,0,0,5" > <Rectangle.Effect> <DropShadowEffect/> </Rectangle.Effect> </Rectangle> <Rectangle Fill="#FFFFFFFF" Stroke="DarkGray" RadiusX="5" RadiusY="5" Margin="10,10,10,15" /> <!--<TextBlock x:Name="ResponseTextBlock" Text="Edit values in the data grid. When finished, click the Commit button to save to the database." Width="200" TextAlignment="Left" Margin="30,20,20,30" TextWrapping="Wrap" />--> </Grid> <Grid HorizontalAlignment="Center" VerticalAlignment="Top" Margin=" 10,10,10,0"> <StackPanel Orientation="Horizontal" Margin="5,0,15,0" Canvas.Top="25" > <TextBlock Text="US State Name contains:" Margin="10,0,0,0" VerticalAlignment="Center"/> <TextBox x:Name="StateNameTextBox" Text="New" Height="23" HorizontalAlignment="Left" VerticalAlignment="Center" Width="125" TextWrapping="NoWrap" Margin="10,0,10,0" FontSize="12" Background="White" AcceptsReturn="False" /> <Button Content="Do Query" Width="75" VerticalAlignment="Center" HorizontalAlignment="Right" Click="QueryButton_Click" Margin="0,0,10,0" Cursor="Hand" /> <!--><Button Content="Commit" Width="75" VerticalAlignment="Center" HorizontalAlignment="Right" Click="Button_Click" Margin="0,0,10,0" Cursor="Hand" />--> </StackPanel> </Grid> <Grid HorizontalAlignment="Right" VerticalAlignment="Top" Margin="10,10,10,0" > <Rectangle Fill="#77919191" Stroke="Gray" RadiusX="10" RadiusY="10" Margin="0,0,0,5" > <Rectangle.Effect> <DropShadowEffect/> </Rectangle.Effect> </Rectangle> <Rectangle Fill="#FFFFFFFF" Stroke="DarkGray" RadiusX="5" RadiusY="5" Margin="10,10,10,15" /> </Grid> </Grid> </UserControl>
Imports Microsoft.VisualBasic Imports System.Collections.Generic Imports System.Windows Imports System.Windows.Controls Imports ESRI.ArcGIS.Client Imports ESRI.ArcGIS.Client.Tasks Imports ESRI.ArcGIS.Client.Symbols Imports ESRI.ArcGIS.Client.Toolkit Imports ESRI.ArcGIS.Client.Geometry Partial Public Class MainPage Inherits UserControl Public Sub New() InitializeComponent() End Sub Private Sub QueryButton_Click(ByVal sender As Object, ByVal e As RoutedEventArgs) Dim queryTask As New QueryTask("http://mcesapp/ArcGIS/rest/services/EditRelTbl/FeatureServer/1") AddHandler queryTask.ExecuteCompleted, AddressOf QueryTask_ExecuteCompleted AddHandler queryTask.Failed, AddressOf QueryTask_Failed Dim query As New ESRI.ArcGIS.Client.Tasks.Query() 'query.Text = StateNameTextBox.Text query.ReturnGeometry = False Dim s As String s = StateNameTextBox.Text query.Where = "REL_FACILITYID = '" & s & "'" query.OutFields.Add("*") queryTask.ExecuteAsync(query) End Sub Private Sub QueryTask_ExecuteCompleted(ByVal sender As Object, ByVal args As ESRI.ArcGIS.Client.Tasks.QueryEventArgs) Dim l As ESRI.ArcGIS.Client.FeatureLayer l = New ESRI.ArcGIS.Client.FeatureLayer l.Url = "http://mcesapp/ArcGIS/rest/services/EditRelTbl/FeatureServer/1" Dim s As String s = StateNameTextBox.Text l.Where = "REL_FACILITYID = '" & s & "'" l.OutFields.Add("*") l.AutoSave = False AddHandler l.Initialized, AddressOf layerInit l.Initialize() l.ClearGraphics() Dim featureSet As FeatureSet = args.FeatureSet If featureSet IsNot Nothing AndAlso featureSet.Features.Count > 0 Then For Each resultFeature As Graphic In featureSet.Features l.Graphics.Add(resultFeature) Next MyDataGrid.GraphicsLayer = l Else MessageBox.Show("No features returned from query") End If End Sub Private Sub LoadFeatureLayer() Dim l As ESRI.ArcGIS.Client.FeatureLayer l = New ESRI.ArcGIS.Client.FeatureLayer l.Url = "http://mcesapp/ArcGIS/rest/services/EditRelTbl/FeatureServer/1" l.AutoSave = False Dim s As String s = StateNameTextBox.Text l.Where = "REL_FACILITYID = '" & s & "'" l.OutFields.Add("*") AddHandler l.Initialized, AddressOf layerInit l.Initialize() End Sub Private Sub layerInit(ByVal sender As Object, ByVal args As EventArgs) 'Load layer information class. If (sender.GetType Is GetType(FeatureLayer)) Then Dim Lay As FeatureLayer = CType(sender, FeatureLayer) Lay.Update() End If End Sub Private Sub QueryTask_Failed(ByVal sender As Object, ByVal args As TaskFailedEventArgs) MessageBox.Show("Query execute error: " & args.Error.Message) End Sub End Class