This question is locked. New answers and comments are not allowed.
I'm using the latest build 2010.3.1501 (tested with SP1 too).
I use RadGridView with DomainDataSource and looks like there a bug when inserting rows.
If I subscribe to AddingNewDataItem and return new entity,
In RowEditEnded event:
* e.EditOperationType is always "Edit" instead of "Insert"
* DomainDataSource.HasChanges is always "False" instead of "True"
* and, of course. DomainDataSource.SubmitChanges() does not submit anything.
Here's the source code to reproduce:
<UserControl x:Class="Accellos.DataServices.WUI.FileMaintenance.Controls.Test1.MyWorkspaceControl1" xmlns:mt="clr-namespace:Accellos.DataServices.MT.Client.DotNet;assembly=Accellos.DataServices.MT.Client.AccellosOneServiceAsync.SL" xmlns:riaControls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.DomainServices" xmlns:telerik="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.GridView" > <Grid> <riaControls:DomainDataSource QueryName="GetAccounts" AutoLoad="True" x:Name="dds" DataContext="{Binding}"> <riaControls:DomainDataSource.DomainContext> <mt:AccountDomainContext/> </riaControls:DomainDataSource.DomainContext> <riaControls:DomainDataSource.SortDescriptors> <riaControls:SortDescriptor PropertyPath="Id" /> </riaControls:DomainDataSource.SortDescriptors> </riaControls:DomainDataSource> <telerik:RadGridView x:Name="gridView1" AutoGenerateColumns="True" ItemsSource="{Binding Data, ElementName=dds}"/> </Grid> </UserControl>using System; using Accellos.DataServices.MT.Client.DotNet; using Accellos.DataServices.MT.Common.DTO; using Accellos.Platform.Silverlight.Workspace; using Telerik.Windows.Controls; using Telerik.Windows.Controls.GridView; namespace Accellos.DataServices.WUI.FileMaintenance.Controls.Test1 { public partial class MyWorkspaceControl1 { #region Constructor public MyWorkspaceControl1(IWorkspace workspace) { InitializeComponent(); if (workspace == null) throw new ArgumentNullException("workspace"); DataServicesApplication application = (DataServicesApplication)workspace.WorkspaceContainer.GetApplicationById(DataServicesApplication.ApplicationId); ((AccountDomainClient)dds.DomainContext.DomainClient).MiddleTierClient = application.CreateMiddleTierServiceClient(); gridView1.AddingNewDataItem += delegate(object sender, GridViewAddingNewEventArgs e) { e.NewObject = new Account(); }; gridView1.RowEditEnded += delegate(object o, GridViewRowEditEndedEventArgs e) { if (e.EditAction != GridViewEditAction.Commit) { if (!dds.IsSubmittingChanges) dds.RejectChanges(); return; } // Is "Edit" instead of "Insert" when inserting GridViewEditOperationType operation = e.EditOperationType; // Always "False" when inserting bool hasChanges = dds.HasChanges; // When inserting does not submit any changes if (!dds.IsSubmittingChanges) dds.SubmitChanges(); }; } #endregion } }If I comment AddingNewDataItem everything works as expected.
Does anyone knows if there any workaround ?