I have a self referential LinqToSql Entiy. I am using this entiy to bind to RadTreeListView to display the data as a Parent-Child relation. Fields are getting added successfully but I am getting error while deleting the Fields.
I am adding entity as
private void AddNewFieldCommand(object parameter){ Field newField = new Field() newField.GrandParent = SelectedGrandParent; SelectedGrandParent.Fields.Add(newField); SelectedField = newField; }I am adding child field as
private void AddNewSubFieldCommand(object parameter) { if (SelectedGradParent != null && SelectedField != null) { Field newSubField = new Field(); newSubField.ParentField= SelectedField; SelectedField.Fields.Add(newSubField); newSubField.GrandParent= SelectedGradParent ; SelectedField = newSubField; } }and deleting the field as
private void DeleteFieldCommand(object parameter) { try { if (parameter != null && parameter is Field) { Field selectedLocalField = parameter as Field; if (selectedLocalField.ParentField != null) { Field parentField = selectedLocalField.ParentField; DeleteFieldIteratively(context, selectedLocalField); //context is DomainContext } else { GrandParent grandParent= selectedLocalField.GrandParent ; DeleteFieldIteratively(context, selectedLocalField); //context is DomainContext } //SelectedField is current selected field if (selectedLocalField.Equals(SelectedField)) SelectedField = null; } } catch (Exception ex) { ShowMessage(ex.Message); } } public static void DeleteFieldIteratively(DomainContext context, Field field) { foreach (Field childField in field.Fields.ToList()) { DeleteFieldIteratively(context, childField); } if (field.EntityState != EntityState.Detached && field.EntityState != EntityState.Deleted && field.EntityState != EntityState.New) { //if fields are from database context.Fields.Remove(field); } else { //If fields has been added from UI field.GrandParent = null; field.Parent = null; //Setting this throws the error
// I have also tested it using remove methods of the Parent's
// Fields Collection as well as detaching the entity with no success } } When I am trying to delete field then I am getting the following error.
System.IndexOutOfRangeException occurred
Message=Index was outside the bounds of the array.
StackTrace:
at Telerik.Windows.Controls.GridView.IndexTree.Set(Int32 index, Double value)
at Telerik.Windows.Controls.GridView.IndexTree.set_Item(Int32 index, Double value)
at Telerik.Windows.Controls.GridView.IndexTree.RemoveAt(Int32 index)
at Telerik.Windows.Controls.GridView.GridViewVirtualizingPanel.OnItemsChanged(Object sender, ItemsChangedEventArgs args)
at Telerik.Windows.Controls.GridView.GridViewBaseVirtualizingPanel.OnItemsChangedInternal(Object sender, ItemsChangedEventArgs args)
at Telerik.Windows.Controls.GridView.GridViewBaseVirtualizingPanel.OnItemsChangedHandler(Object sender, ItemsChangedEventArgs args)
at Telerik.Windows.Controls.GridView.GridViewItemContainerGenerator.OnItemRemoved(Object item, Int32 itemIndex)
at Telerik.Windows.Controls.GridView.GridViewItemContainerGenerator.OnCollectionChanged(Object sender, NotifyCollectionChangedEventArgs args)
at Telerik.Windows.Controls.GridView.GridViewItemContainerGenerator.Telerik.Windows.Data.IWeakEventListener<System.Collections.Specialized.NotifyCollectionChangedEventArgs>.ReceiveWeakEvent(Object sender, NotifyCollectionChangedEventArgs args)
at Telerik.Windows.Data.WeakEvent.WeakListener`1.Handler(Object sender, TArgs args)
at System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
at Telerik.Windows.Data.DataItemCollection.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
at Telerik.Windows.Data.DataItemCollection.OnCollectionViewCollectionChanged(NotifyCollectionChangedEventArgs e)
at Telerik.Windows.Data.DataItemCollection.Telerik.Windows.Data.IWeakEventListener<System.Collections.Specialized.NotifyCollectionChangedEventArgs>.ReceiveWeakEvent(Object sender, NotifyCollectionChangedEventArgs e)
at Telerik.Windows.Data.WeakEvent.WeakListener`1.Handler(Object sender, TArgs args)
at Telerik.Windows.Data.QueryableCollectionView.OnCollectionChanged(NotifyCollectionChangedEventArgs args)
at Telerik.Windows.Data.QueryableCollectionView.ProcessSynchronousCollectionChangedWithAdjustedArgs(NotifyCollectionChangedEventArgs originalArguments, Int32 adjustedOldIndex, Int32 adjustedNewIndex)
at Telerik.Windows.Data.QueryableCollectionView.ProcessSynchronousCollectionChanged(NotifyCollectionChangedEventArgs args)
at Telerik.Windows.Data.QueryableCollectionView.ProcessCollectionChanged(NotifyCollectionChangedEventArgs args)
at Telerik.Windows.Data.HierarchicalCollectionView.ProcessCollectionChanged(NotifyCollectionChangedEventArgs args)
at Telerik.Windows.Data.HierarchicalChildCollectionView.ProcessCollectionChanged(NotifyCollectionChangedEventArgs args)
at Telerik.Windows.Data.QueryableCollectionView.OnSourceCollectionChanged(Object sender, NotifyCollectionChangedEventArgs args)
at Telerik.Windows.Data.QueryableCollectionView.Telerik.Windows.Data.IWeakEventListener<System.Collections.Specialized.NotifyCollectionChangedEventArgs>.ReceiveWeakEvent(Object sender, NotifyCollectionChangedEventArgs args)
at Telerik.Windows.Data.WeakEvent.WeakListener`1.Handler(Object sender, TArgs args)
at System.ServiceModel.DomainServices.Client.EntityCollection`1.RaiseCollectionChangedNotification(NotifyCollectionChangedEventArgs args)
at System.ServiceModel.DomainServices.Client.EntityCollection`1.Remove(TEntity entity)
at ProjetName.Field.set_Parent_Field(Field value)
InnerException:
I have been struggling to fix this issue for several days but no result till now :(
Please suggest me for the fix.
Thanks in advance.
